結果
| 問題 |
No.2119 一般化百五減算
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:34:42 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,114 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 82,068 KB |
| 実行使用メモリ | 54,004 KB |
| 最終ジャッジ日時 | 2025-03-31 17:35:19 |
| 合計ジャッジ時間 | 5,659 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 TLE * 1 -- * 4 |
ソースコード
import sys
from math import gcd
def crt(a1, m1, a2, m2):
g = gcd(m1, m2)
if (a2 - a1) % g != 0:
return None
m_div = m1 // g
n_div = m2 // g
inv = pow(m_div, -1, n_div)
k = (( (a2 - a1) // g ) * inv) % n_div
lcm = m_div * m2 # lcm(m1, m2)
x0 = (a1 + k * m1) % lcm
return (x0, lcm)
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
M = int(input[ptr])
ptr += 1
B = []
C = []
for _ in range(M):
b = int(input[ptr])
c = int(input[ptr + 1])
ptr += 2
B.append(b)
# Normalize C
c_mod = c % b
C.append(c_mod)
# Initial conditions: x ≡ 0 mod 1
current_a = 0
current_mod = 1
for i in range(M):
b = B[i]
c = C[i]
res = crt(current_a, current_mod, c, b)
if res is None:
print("NaN")
return
current_a, current_mod = res
# Check if current_a is within N
if current_a <= N:
print(current_a)
else:
print("NaN")
if __name__ == "__main__":
main()
lam6er