結果
問題 | 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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 9 |
ソースコード
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)