結果
問題 | No.1243 約数加算 |
ユーザー | Shinya 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 |
ソースコード
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)