結果
| 問題 |
No.187 中華風 (Hard)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-01-18 09:25:56 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 442 ms / 3,000 ms |
| コード長 | 793 bytes |
| コンパイル時間 | 233 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 77,824 KB |
| 最終ジャッジ日時 | 2024-06-11 12:27:05 |
| 合計ジャッジ時間 | 6,758 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 |
ソースコード
from math import gcd
def extgcd(a, b, x1=1, y1=0, x2=0, y2=1):
if b == 0:
return a, x1, y1
q = a//b
return extgcd(b, a%b, x2 ,y2, x1-x2*q, y1-y2*q)
def crt2(a, b, m1, m2):
if a < b:
a, b = b, a
m1, m2 = m2, m1
d, im1, im2 = extgcd(m1, m2)
if a%d != b%d:
return None
mm = m1//d*m2
x = (a - ((a-b)//d)*(m1*im1)) % mm
return x, mm
def crt(as_, ms):
x = as_[0]
mm = ms[0]
for a, m in zip(as_[1:], ms[1:]):
t = crt2(a, x, m, mm)
if t is None:
return None
x, mm = t
return x, mm
n = int(input())
as_, ms = zip(*(map(int, input().split()) for _ in range(n)))
t = crt(as_, ms)
if t is None:
print(-1)
else:
x, mm = t
if x == 0:
x = mm
print(x%(10**9+7))