結果
| 問題 |
No.1936 Rational Approximation
|
| コンテスト | |
| ユーザー |
sotanishy
|
| 提出日時 | 2022-05-13 23:18:07 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 2,000 ms |
| コード長 | 587 bytes |
| コンパイル時間 | 353 ms |
| コンパイル使用メモリ | 82,128 KB |
| 実行使用メモリ | 52,352 KB |
| 最終ジャッジ日時 | 2024-07-22 03:34:29 |
| 合計ジャッジ時間 | 1,594 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 14 |
ソースコード
from math import gcd
import sys
input = sys.stdin.readline
def extgcd(a, b):
s, sx, sy, t, tx, ty = a, 1, 0, b, 0, 1
while t:
q = s // t
s -= t * q
s, t = t, s
sx -= tx * q
sx, tx = tx, sx
sy -= ty * q
sy, ty = ty, sy
return sx, sy
P, Q = map(int, input().split())
def calc(P, Q):
y, x = extgcd(P, Q)
if y < 0:
z = (-y + Q - 1) // Q
y += z*Q
x -= z*P
x *= -1
g = gcd(x, y)
return x//g, y//g
pl, ql = calc(P, Q)
pr, qr = calc(Q-P, Q)
pr = qr - pr
print(pl + ql + pr + qr)
sotanishy