100AC - ABC070C: Multiple Clocks

ABC070-C (300 points)
問題

それぞれ  T_i秒で針が 1 回転する  N 台の時計がある.
全ての時計の針が真上を向いている状態からスタートして, 次に全ての時計の針が真上を向くのは何秒後か.

  •  1 \leq N \leq 10^2
  •  1 \leq T_i \leq 10^{18}
  • 入力は全て整数
  • 答えは  10^{18} 秒以内
方針
  • 最小公倍数を求めるのみ.
  • ググるとたくさん実装が出てくる.
  • math.gcd を使おうとするとAttributeErrorが出たので(なんで?), gcdも実装する.
from functools import reduce

# input
N = int(input())
T = [int(input()) for _ in range(N)]

def gcd(x, y):
    while y:
        x, y = y, x % y
    return x

def lcm_base(x, y):
    return (x * y) // gcd(x, y)

def lcm_list(numbers_list):
    return reduce(lcm_base, numbers_list, 1)

print(lcm_list(T))