小编Him*_*war的帖子

Python 3.5 - '//'和'int()'之间的区别

我在python 3.5中解决了这个问题.这是我的解决方案代码:

def gcd(a, b):
if b == 0:
    return a
return gcd(b, a % b)

def lcm(a, b):
    return int((a*b)/gcd(a,b))

def core():
    N = int(input())
    nums = [int(x) for x in input().split()]
    ans = lcm(nums[0], nums[1])
    for i in range(0, N):
        for j in range(i+1, N):
            ans = min(ans, int(lcm(nums[i], nums[j])))
    return int(ans)

for t in range(1, int(input()) + 1):
    print(core())
Run Code Online (Sandbox Code Playgroud)

它给了我错误的子任务答案3.经过几个小时的拔毛我发现改变了线

return int((a*b)/gcd(a,b))
Run Code Online (Sandbox Code Playgroud)

在lcm函数中

return (a*b)//gcd(a,b)
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.这让我很好奇.我一直认为int()和floor()函数对于正整数是完全相同的.既然我们确信分子和分母总是积极的,为什么这里会出现这种差异?任何int((a*b)/gcd(a,b))a*b//gcd(a,b)给定a,b 不同的样本测试用例都是正整数?

更新: 示例测试用例,其中int(a/b)与// b不同:250263628386554294 1. …

python python-3.x

0
推荐指数
1
解决办法
87
查看次数

标签 统计

python ×1

python-3.x ×1