結果
| 問題 |
No.187 中華風 (Hard)
|
| コンテスト | |
| ユーザー |
shinnshinn
|
| 提出日時 | 2022-03-02 23:18:01 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 745 ms / 3,000 ms |
| コード長 | 874 bytes |
| コンパイル時間 | 261 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 11,264 KB |
| 最終ジャッジ日時 | 2024-07-16 13:45:05 |
| 合計ジャッジ時間 | 9,330 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 |
ソースコード
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a%b)
def extgcd(a, b):
#拡張ユークリッド互除法
#ax + by = gcd(a, b)となる(x, y)を求めます
if b == 0:
return [1, 0]
q = a//b
r = a%b
s, t = extgcd(b, r)
y = s - q*t
return [t, y]
def lcm(a, b):
return a // gcd(a, b) * b
def CRT(rs, ms):
R = 0
M = 1
for r, m in zip(rs, ms):
g = gcd(M, m)
s, t = extgcd(M, m)
if r%g != R%g:
print(-1)
exit(0)
R = (m*t*R + M*s*r) // g
M = lcm(m, M)
R %= M
return [R, M]
x = []
y = []
v = []
n = int(input())
for i in range(n):
a, b = map(int, input().split())
x.append(a)
y.append(b)
v.append([a, b])
r, m = CRT(x, y)
MOD = 10**9 + 7
if r == 0:
print(m%MOD)
else:
print(r%MOD)
shinnshinn