0
我在python 3.5中解決了this問題。這裏是我的解決方案代碼:Python 3.5 - '//'和'int()'之間的區別
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())
這是給我錯誤答案的子任務3後的頭髮拉扯時間我發現,改變LCM函數的行
return int((a*b)/gcd(a,b))
到
return (a*b)//gcd(a,b)
解決了這個問題。這讓我好奇。我一直認爲int()和floor()函數對於正整數完全相同。既然我們確信分子和分母總是正面的,爲什麼這裏會出現這種差異呢? 任何樣本測試案例,其中int((a*b)/gcd(a,b))
將不同於a*b//gcd(a,b)
給定a,b是正整數?
更新: 抽樣檢測情況INT(A/B)是從不同// B:250263628386554294 1.
對於解釋see this
是的但'int()'四捨五入操作數,'//'截斷結果。 –
@cᴏʟᴅsᴘᴇᴇᴅ:不,'int'向0和'//'樓層四捨五入。 – user2357112
@cᴏʟᴅsᴘᴇᴇᴅ:這是不正確的。 'int(9/10)'是'0'。 – BrenBarn