結果

問題 No.1952 xooooooooooor
ユーザー siganaisiganai
提出日時 2022-05-26 17:46:16
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 63 ms / 2,000 ms
コード長 964 bytes
コンパイル時間 220 ms
コンパイル使用メモリ 82,076 KB
実行使用メモリ 64,512 KB
最終ジャッジ日時 2024-09-20 15:03:38
合計ジャッジ時間 3,499 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 58 ms
63,744 KB
testcase_01 AC 57 ms
63,744 KB
testcase_02 AC 57 ms
64,128 KB
testcase_03 AC 57 ms
64,000 KB
testcase_04 AC 55 ms
63,744 KB
testcase_05 AC 57 ms
64,000 KB
testcase_06 AC 58 ms
63,872 KB
testcase_07 AC 55 ms
64,000 KB
testcase_08 AC 63 ms
64,000 KB
testcase_09 AC 59 ms
64,060 KB
testcase_10 AC 57 ms
64,000 KB
testcase_11 AC 56 ms
63,744 KB
testcase_12 AC 59 ms
63,616 KB
testcase_13 AC 61 ms
63,744 KB
testcase_14 AC 58 ms
64,000 KB
testcase_15 AC 57 ms
64,000 KB
testcase_16 AC 56 ms
63,744 KB
testcase_17 AC 58 ms
63,616 KB
testcase_18 AC 58 ms
64,128 KB
testcase_19 AC 59 ms
63,744 KB
testcase_20 AC 57 ms
63,616 KB
testcase_21 AC 56 ms
63,872 KB
testcase_22 AC 56 ms
63,872 KB
testcase_23 AC 58 ms
63,616 KB
testcase_24 AC 57 ms
63,616 KB
testcase_25 AC 57 ms
63,616 KB
testcase_26 AC 56 ms
63,744 KB
testcase_27 AC 55 ms
64,512 KB
testcase_28 AC 56 ms
64,000 KB
testcase_29 AC 56 ms
64,000 KB
testcase_30 AC 56 ms
64,000 KB
testcase_31 AC 55 ms
63,744 KB
testcase_32 AC 56 ms
64,128 KB
testcase_33 AC 57 ms
64,128 KB
testcase_34 AC 55 ms
64,128 KB
testcase_35 AC 57 ms
64,128 KB
testcase_36 AC 57 ms
64,128 KB
testcase_37 AC 58 ms
64,128 KB
testcase_38 AC 60 ms
63,872 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env PyPy3

from collections import Counter, defaultdict, deque
import itertools
import re
import math
from functools import reduce
import operator
import bisect
from heapq import *
import functools

mod=998244353

import sys
input = sys.stdin.readline
n,m=map(int,input().split())
lenn = n.bit_length()
binn = bin(n)[2:]
lef = [0] * len(binn)
rig = [0] * len(binn)
for i in range(len(binn)):
    lef[i] = int(binn[i])
    rig[i] = int(binn[~i])
    if i:
        lef[i] ^= lef[i-1]
        rig[i] ^= rig[i-1]
if m < 2 * len(binn) + 5:
    ans = 0
    for i in range(m):
        ans ^= n * 2 ** i
    print(ans % mod)
else:
    ans = 0
    for i in range(len(binn) - 1):
        ans += rig[i] * pow(2,i,mod)
        ans %= mod
    for i in range(len(binn) - 1):
        ans += lef[i] * pow(2,m+len(binn)-2-i,mod)
        ans %= mod
    ans += rig[-1] * pow(2,m,mod)
    ans %= mod
    ans -= rig[-1] * pow(2,len(binn)-1,mod)
    ans %= mod
    print(ans)
0