n=(n*(n+1))//2和n=(n*(n+1))/2的差异;n=int(n)

2024-05-14 11:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉竞争性编程和python。我在codechef上尝试这个问题,https://www.codechef.com/CCSTART2/problems/ADDNATRL,它要求我找到前N个自然数的和

这是我的第一个解决方案:

n = int(input())
n = (n * (n + 1)) / 2
print(int(n))

这给了我一个错误的答案

虽然接受了以下解决方案

n = int(input())
n = (n * (n + 1)) // 2
print(n)

所以我想知道实际的区别是什么,因为两者在我的本地机器上都给了我相同的输出


Tags: 答案httpscominputwww编程竞争性错误
2条回答

/以浮点形式给出商,//给出整数结果

在n 1e9范围的上限处,大约1e18的中间结果不能在IEEE“双”浮点中精确表示,这是python通常使用的,并且存在舍入错误。输出一个近似答案

同时,整数的范围是无限的,因此输出精确的答案

例如:

>>> n = 999999998
>>> int((n * (n + 1)) / 2)
499999998500000000
>>> (n * (n + 1)) // 2
499999998500000001
>>> 

/给出浮点形式的余数,//给出整数结果

//与其他编程或脚本语言中的/相同

但是在Python中/作为除法引入,给出整数输出,//作为楼层除法引入,给出整数输出

与竞争性编程一样,采用最佳方式。除了使用/int()之外,还可以使用//。这也减少了运行时间

相关问题 更多 >

    热门问题