結果
問題 | No.1952 xooooooooooor |
ユーザー |
![]() |
提出日時 | 2023-06-09 00:32:19 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 39 ms / 2,000 ms |
コード長 | 519 bytes |
コンパイル時間 | 694 ms |
コンパイル使用メモリ | 82,328 KB |
実行使用メモリ | 53,932 KB |
最終ジャッジ日時 | 2024-12-31 08:31:57 |
合計ジャッジ時間 | 3,406 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 39 |
ソースコード
N, M = map(int, input().split()) mod = 998244353 ans = 0 if M <= 100: for i in range(M): ans ^= N << i print(ans%mod) exit() if N == 0: print(0) exit() K = 0 temp = N while temp: temp //= 2 K += 1 keta = M - K - 1 up, down, all = 0, 0, 0 for i in range(K): up ^= (N >> i) down ^= (N << i) % (1 << K) all ^= (N >> i) & 1 middle = 0 if all: middle = pow(2, keta, mod) - 1 ans = down + middle * pow(2, K, mod) + up * pow(2, K + keta, mod) print(ans%mod)