67092


# 説明

<https://atcoder.jp/contests/abc070/tasks/abc070_c>  
私はこの問題を解答したのですが、ACを貰う過程で原因不明のエラーに遭遇しました。  
自力ではREが出た原因を究明できなかったので、ここで質問させて頂きました。

## 自分の解答

[code]

    from fractions import gcd
    
    def lcm(a, b):
        return (a * b) // gcd(a, b)
    
    n = int(input())
    
    ans = 1
    for i in range(n):
        t = int(input())
        ans = lcm(t, ans)
    print(ans)
    
[/code]

# 原因不明のエラー

## intによるキャストと//による切り捨て除算の違い

ここで関数`lcm`の  
`return (a * b) // gcd(a, b)`  
を  
`return int(a * b) / gcd(a, b)`

に変更するとエラーが発生します。  
この変更によってなぜエラーが発生するのでしょうか？

## fractionsとmathによるgcdの違い

上の自分の解答の部分の  
`from fractions import gcd`  
を  
`from math import gcd`  
に変更するとエラーが発生してしまいます。  
両者同じgcdという機能を持つにもかかわらず、なぜエラーが起こるのでしょうか？


CC BY-SA 4.0
2020-05-26T13:51:08.960
67011
2020-05-28T16:36:28.583
2020-05-28T16:36:28.583
3060
9616
question
python python3
AtCoder Beginner Contest 070 C問題が通らなくなる


**kunif** さんのコメントにより、この問題が解決されました。

# intによるキャストと//による切り捨て除算の違い

[この２つのコードのどこが異なるのか教えて下さい。](https://ja.stackoverflow.com/questions/61899/%e3%81%93%e3%81%ae%ef%bc%92%e3%81%a4%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ae%e3%81%a9%e3%81%93%e3%81%8c%e7%95%b0%e3%81%aa%e3%82%8b%e3%81%ae%e3%81%8b%e6%95%99%e3%81%88%e3%81%a6%e4%b8%8b%e3%81%95%e3%81%84)

両者の計算方法の精度による違いが原因でした。

# fractionsとmathによるgcdの違い

<https://qiita.com/k_yamashita/items/1c8216ddb0b56fbdac46>

atcoder上とローカル環境でのpythonのバージョンの違いが原因でした。


CC BY-SA 4.0
2020-05-28T15:02:14.933
67092
2020-05-28T15:02:14.933
9616
67011
answer