結果
| 問題 |
No.187 中華風 (Hard)
|
| コンテスト | |
| ユーザー |
orisano
|
| 提出日時 | 2016-05-28 14:21:06 |
| 言語 | Python2 (2.7.18) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 922 bytes |
| コンパイル時間 | 850 ms |
| コンパイル使用メモリ | 7,072 KB |
| 実行使用メモリ | 8,572 KB |
| 最終ジャッジ日時 | 2024-10-07 17:28:02 |
| 合計ジャッジ時間 | 12,558 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 25 |
ソースコード
from functools import *
def egcd(a, b):
x, y, u, v = 0, 1, 1, 0
while a != 0:
q, r = b // a, b % a
m, n = x - u * q, y - v * q
b, a, x, y, u, v = a, r, u, v, m, n
gcd = b
return gcd, x, y
def lcm(a, b):
from fractions import gcd
return a // gcd(a, b) * b
def gcrt(congs):
def fn(cong, prod):
a, n = cong
m = prod // n
g, x, _ = egcd(m, n)
return m // g * x * a
def crt(a, b):
N = a[1] * b[1]
L = lcm(a[1], b[1])
return (fn(a, N) + fn(b, N)) % L, L
return reduce(crt, congs)
def main():
N = int(raw_input())
congs = [tuple([int(x) for x in raw_input().split(" ")]) for _ in range(N)]
ans, mod = gcrt(congs)[0]
if ans == 0:
ans = mod
if any(ans % m != a for a, m in congs):
print(-1)
else:
print(ans % (10**9 + 7))
if __name__ == "__main__":
main()
orisano