結果
| 問題 |
No.1952 xooooooooooor
|
| コンテスト | |
| ユーザー |
👑 Kazun
|
| 提出日時 | 2022-05-20 22:55:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 759 bytes |
| コンパイル時間 | 160 ms |
| コンパイル使用メモリ | 82,008 KB |
| 実行使用メモリ | 65,952 KB |
| 最終ジャッジ日時 | 2024-09-20 09:17:51 |
| 合計ジャッジ時間 | 2,618 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 37 RE * 2 |
ソースコード
def bin(N):
X=[]
while N:
X.append(N%2)
N//=2
return X
def num(X):
N=0
for x in X[::-1]:
N=2*N+x
return N
def greedy(N,M):
X=0
for _ in range(M):
X^=N
N<<=1
return X%Mod
def solve(N,M):
b=bin(N)
Mod=998244353
if M<=len(b):
return greedy(N,M)%Mod
b_inv=b[::-1]
c=[0]*len(b); d=[0]*len(b)
for i in range(len(b)):
if i==0:
c[i]=b[i]
d[i]=b_inv[i]
else:
c[i]=c[i-1]^b[i]
d[i]=d[i-1]^b_inv[i]
d=d[::-1]
t=M-1-len(b)
X=num(d)*pow(2,t+len(b),Mod)+c[-1]*(pow(2,t,Mod)-1)*pow(2,len(b),Mod)+num(c)
return X%Mod
N,M=map(int,input().split())
Mod=998244353
print(solve(N,M))
Kazun