結果

問題 No.2882 Comeback
ユーザー Iroha_3856Iroha_3856
提出日時 2024-08-30 01:14:09
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 1,549 bytes
コンパイル時間 375 ms
コンパイル使用メモリ 82,572 KB
実行使用メモリ 67,380 KB
最終ジャッジ日時 2024-08-30 01:14:28
合計ジャッジ時間 3,447 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
testcase_24 RE -
testcase_25 RE -
testcase_26 RE -
testcase_27 RE -
testcase_28 RE -
testcase_29 RE -
testcase_30 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    A = int(data[0])
    B = int(data[1])
    
    # 変化する点を記録するリスト
    change = set()
    
    # A に対する変化する点
    d = 1
    while d * d <= A:
        change.add(d)
        change.add(A // d)
        d += 1
    
    # B に対する変化する点
    d = 1
    while d * d <= B:
        change.add(d)
        change.add(B // d)
        d += 1
    
    # 降順にソート
    change = sorted(change, reverse=True)
    
    # 重複削除済みの変化点リストに0を追加
    change.append(0)
    
    ans = 0
    N = len(change)
    
    for i in range(N - 1):
        # 初項
        fa = A % change[i]
        fb = B % change[i]
        # 公差
        da = A // change[i]
        db = B // change[i]
        # 打ち切り限界
        length = change[i] - change[i + 1]
        
        # 一次式の不等式を解く
        if da == db:
            if fa >= fb:
                ans += length
            continue
        
        if fa - fb < 0:
            continue
        
        x = (fa - fb) // (db - da)
        # 打ち切り
        if x >= length:
            x = length - 1
        # 0-indexedだったので、+1して数える
        ans += x + 1
    
    print(ans)

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    T = int(data[0])
    index = 1
    for _ in range(T):
        solve()
        index += 2

if __name__ == "__main__":
    main()
0