結果

問題 No.1243 約数加算
ユーザー Shinya FujitaShinya Fujita
提出日時 2024-10-02 13:56:54
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 55 ms / 2,000 ms
コード長 857 bytes
コンパイル時間 307 ms
コンパイル使用メモリ 81,920 KB
実行使用メモリ 64,396 KB
最終ジャッジ日時 2024-10-02 13:56:55
合計ジャッジ時間 1,556 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 36 ms
51,840 KB
testcase_01 AC 38 ms
51,968 KB
testcase_02 AC 38 ms
51,840 KB
testcase_03 AC 36 ms
52,608 KB
testcase_04 AC 51 ms
63,104 KB
testcase_05 AC 49 ms
64,396 KB
testcase_06 AC 50 ms
64,384 KB
testcase_07 AC 55 ms
63,360 KB
testcase_08 AC 50 ms
64,384 KB
testcase_09 AC 36 ms
51,968 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve(a, b):
    res = []
    while a.bit_length() == b.bit_length():
        base = 1 << (a.bit_length() - 1)
        a -= base
        b -= base
    
    if a:
        while a.bit_length() != b.bit_length():
            add = ((a-1)&a)^a
            res.append(add)
            a += add
        base = 1 << (a.bit_length() - 1)
        b -= base
    
    
    while b:
        add = 1 << (b.bit_length() - 1)
        res.append(add)
        b -= add
    return res


def check(a, b, res):
    for r in res:
        if a % r:
            print('NG Case 1')
            return False
        a += r
    if a == b:
        return True
    else:
        print('NG Case 2')
        return False

T = int(input())
for _ in range(T):
    a, b = map(int, input().split())
    res = solve(a, b)
    # print(check(a, b, res))
    print(len(res))
    print(*res)
0