長整数が速い
Pythonの長整数が意外と速いので、高々10^100程度の値を1000回足すなら、毎回剰余取ったりせずにそのまま計算した方が速い
code:python
...: x = int("7" * 100)
...: for i in range(1000):
...: x += x
...:
71.3 µs ± 624 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
...: x = int("7" * 100)
...: for i in range(1000):
...: x += x
...: x %= 1000000007
...:
104 µs ± 890 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
ABC177では、毎回剰余を取らずに計算して最後に剰余を取るコードがPyPy3提出の中での速度一位だった この問題は高々10^9を10^6回加算乗算して最大でも10^30程度に収まるものだった