結果

問題 No.141 魔法少女コバ
ユーザー FromBooska
提出日時 2023-03-07 22:05:44
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 40 ms / 5,000 ms
コード長 892 bytes
コンパイル時間 233 ms
コンパイル使用メモリ 81,976 KB
実行使用メモリ 52,608 KB
最終ジャッジ日時 2024-09-18 02:14:37
合計ジャッジ時間 5,835 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 93
権限があれば一括ダウンロードができます

ソースコード

diff #

# なんかユークリッドの互除法っぽい動きに見える
# とりあえず逆順にしてみるか
# 分子の方を大きくして、引ける数分だけ引く
# 分母の方が大きくなったら反転して引けるだけ引く
# の繰り返しが速いのでは
# この手の問題は両数が互いに素でないとき、倍数のとき、同じとき、などに注意
# 本問でできない、-1はないはず

from math import gcd
M, N = map(int, input().split())
count = 0
while True:
    g = gcd(M, N)
    M //= g
    N //= g
    #print('M', M, 'N', N, 'count', count)
    if (M, N) == (1, 1):
        break
    
    if N == 1:
        temp = M//N-1
        (M, N) = (M - temp*N, N)
        count += temp
    elif M < N:
        (M, N) = (N, M)
        count += 1
    else:
        temp = M//N
        (M, N) = (M-temp*N, N)
        count += temp
print(count)   
0