結果
問題 | No.1544 [Cherry 2nd Tune C] Synchroscope |
ユーザー |
![]() |
提出日時 | 2021-06-11 21:34:28 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,367 ms / 2,000 ms |
コード長 | 1,004 bytes |
コンパイル時間 | 370 ms |
コンパイル使用メモリ | 82,588 KB |
実行使用メモリ | 76,144 KB |
最終ジャッジ日時 | 2024-12-14 22:36:30 |
合計ジャッジ時間 | 7,916 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 48 |
ソースコード
def ext_gcd(a :int, b :int):# Extended Euclidean algorithmx0, y0 = 1, 0x1, y1 = 0, 1while b != 0:q,r = divmod(a, b)x2 = x0 - q * x1y2 = y0 - q * y1a = bb = rx0, y0 = x1, y1x1, y1 = x2, y2return (a, x0, y0)def crt(r1 :int, m1 :int, r2 :int, m2 :int):# Chinese Remainder Theorem# x = r1 (mod m1), x = r2 (mod m2)# <-> x = r3 (mod m3)g,p,q = ext_gcd(m1, m2)if (r2 - r1) % g != 0:return 0, -1m3 = m1 * m2 // g # lcm of m1 and m2r3 = r1 + m1 * ((r2 - r1) // g * p)r3 %= m3return (r3, m3)n, m = map(int, input().split())a = list(map(int, input().split()))b = list(map(int, input().split()))ans = 100000000000for i in range(n):for j in range(m):if a[i] == b[j]:t = crt(i, n, j, m)if t[1] != -1 and ans > t[0]:ans = t[0]if ans == 100000000000:print(-1)else:print(ans + 1)