結果
| 問題 |
No.3179 3 time mod
|
| コンテスト | |
| ユーザー |
timi
|
| 提出日時 | 2025-06-13 21:32:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 37 ms / 2,000 ms |
| コード長 | 819 bytes |
| コンパイル時間 | 168 ms |
| コンパイル使用メモリ | 82,784 KB |
| 実行使用メモリ | 54,328 KB |
| 最終ジャッジ日時 | 2025-06-14 01:38:58 |
| 合計ジャッジ時間 | 2,917 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 42 |
ソースコード
N=int(input())
A=list(map(int, input().split()))
B=list(map(int, input().split()))
#D=[[]for i in range(N)]
def inv_gcd(a, b):
a = a%b
if a == 0:
return b,0
s = b
t = a
m0 = 0
m1 = 1
while t:
u = s//t
s -= t*u
m0 -= m1*u
s,t = t,s
m0,m1 = m1,m0
if m0 < 0:
m0 += b//s
return s,m0
def chinese_remainder(rrr, mmm):
n = len(rrr)
r0 = 0
m0 = 1
for i in range(n):
r1 = rrr[i]%mmm[i]
m1 = mmm[i]
if m0 < m1:
r0,r1 = r1,r0
m0,m1 = m1,m0
if m0%m1 == 0:
if r0%m1 != r1:
return 0,0
continue
g,im = inv_gcd(m0,m1)
u1 = m1//g
if (r1-r0)%g:
return 0, 0
x = (r1-r0)//g%u1*im%u1
r0 += x*m0
m0 *= u1
if r0 < 0:
r0 += m0
return r0,m0
mod=10**9+7
r,m=chinese_remainder(B,A)
print((N-r)//m+1)
timi