結果
| 問題 |
No.2558 中国剰余定理
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2023-09-19 21:43:34 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 44 ms / 2,000 ms |
| コード長 | 636 bytes |
| コンパイル時間 | 167 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 52,224 KB |
| 最終ジャッジ日時 | 2024-07-05 21:44:55 |
| 合計ジャッジ時間 | 2,394 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
# 拡張ユークリッドの互除法を用いた解法
from math import gcd
# aとbの最大公約数gcdと、a*x - b*y = 1 の特殊解x, y を返す
def extended_gcd(a, b):
if a % b == 0:
gcd = b
x = 1
y = 1 - (a // b)
else:
gcd, pre_x, pre_y = extended_gcd(b, a % b)
x = pre_y
y = pre_x - (a // b) * pre_y
return gcd, x, y
A, B, a, b = map(int, input().split())
gcd, x, y = extended_gcd(A, B)
# 入力値チェック
assert gcd == 1
assert 1 <= A <= 3000
assert 1 <= B <= 3000
assert 0 <= a < A
assert 0 <= b < B
ans = ((A * x) * (b - a) + a) % (A * B)
print(ans)