結果
問題 |
No.187 中華風 (Hard)
|
ユーザー |
|
提出日時 | 2025-02-12 03:04:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 134 ms / 3,000 ms |
コード長 | 945 bytes |
コンパイル時間 | 333 ms |
コンパイル使用メモリ | 82,916 KB |
実行使用メモリ | 77,048 KB |
最終ジャッジ日時 | 2025-02-12 03:04:55 |
合計ジャッジ時間 | 3,695 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 25 |
ソースコード
def modulo(x, y): return (x % y + y) % y def floor(x, y): r = modulo(x, y) return (x - r) // y def gcd(a, b): if b == 0: return a else: return gcd(b, modulo(a, b)) def ext_gcd(a, b): if b == 0: return a, 1, 0 else: g, x, y = ext_gcd(b, modulo(a, b)) return g, y, x - floor(a, b) * y def crt(ss): r = 0 m = 1 for bi, mi in ss: g, p, _ = ext_gcd(m, mi) if (bi - r) % g != 0: return -1, -1 t = modulo(floor(bi - r, g) * p, floor(mi, g)) r = r + m * t m = floor(m * mi, g) r = modulo(r, m) return r, m def main(): n = int(input()) rs = [] for _ in range(n): rs.append(list(map(int, input().split()))) b, m = crt(rs) if b < 0: print(-1) elif b == 0: print(m%1000000007) else: print(b%1000000007) if __name__ == "__main__": main()