結果
問題 |
No.1952 xooooooooooor
|
ユーザー |
|
提出日時 | 2022-05-20 23:00:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 521 bytes |
コンパイル時間 | 159 ms |
コンパイル使用メモリ | 82,416 KB |
実行使用メモリ | 52,352 KB |
最終ジャッジ日時 | 2024-09-20 09:22:46 |
合計ジャッジ時間 | 2,800 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 39 |
ソースコード
N,M = map(int,input().split()) P = 998244353 import sys if M <= 70: ans = 0 for i in range(M): ans ^= N << i print(ans % P) exit() if N == 0: print(0) exit() if N == 1: ans = pow(2,M,P) - 1 print(ans % P) exit() k = len(bin(N)) - 2 a = 0 for i in range(k): a ^= N << i a &= (1 << (k-1)) - 1 b = 0 for i in range(k): b ^= N >> i b &= (1 << k) - 1 b >>= 1 t = bin(N).count('1') % 2 ans = b * pow(2,M,P) + t * pow(2,k-1,P) * (pow(2,M + 1 - k,P) - 1) + a print(ans % P)