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のために私に間違った答えを与えていた
その
return (a*b)//gcd(a,b)
にLCM関数のライン
return int((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
はい、 'int()'はオペランドを丸め、 '//'は結果を切り捨てます。 –
@cᴏʟᴅsᴘᴇᴇᴅ:いいえ、 'int'は0と' // 'フロアに向かって丸めます。 – user2357112
@cᴏʟᴅsᴘᴇᴇᴅ:そうではありません。 'int(9/10)'は '0'です。 – BrenBarn