結果

問題 No.1952 xooooooooooor
ユーザー siganaisiganai
提出日時 2022-05-26 17:46:16
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 56 ms / 2,000 ms
コード長 964 bytes
コンパイル時間 195 ms
コンパイル使用メモリ 81,812 KB
実行使用メモリ 63,412 KB
最終ジャッジ日時 2023-10-20 19:30:23
合計ジャッジ時間 3,604 ms
ジャッジサーバーID
(参考情報)
judge15 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 53 ms
63,412 KB
testcase_01 AC 53 ms
63,412 KB
testcase_02 AC 51 ms
63,412 KB
testcase_03 AC 50 ms
63,412 KB
testcase_04 AC 53 ms
63,412 KB
testcase_05 AC 54 ms
63,412 KB
testcase_06 AC 53 ms
63,412 KB
testcase_07 AC 53 ms
63,412 KB
testcase_08 AC 54 ms
63,412 KB
testcase_09 AC 53 ms
63,412 KB
testcase_10 AC 52 ms
63,412 KB
testcase_11 AC 54 ms
63,412 KB
testcase_12 AC 53 ms
63,412 KB
testcase_13 AC 52 ms
63,412 KB
testcase_14 AC 53 ms
63,412 KB
testcase_15 AC 53 ms
63,412 KB
testcase_16 AC 52 ms
63,412 KB
testcase_17 AC 50 ms
63,412 KB
testcase_18 AC 51 ms
63,412 KB
testcase_19 AC 50 ms
63,412 KB
testcase_20 AC 53 ms
63,412 KB
testcase_21 AC 52 ms
63,412 KB
testcase_22 AC 54 ms
63,412 KB
testcase_23 AC 53 ms
63,412 KB
testcase_24 AC 51 ms
63,412 KB
testcase_25 AC 51 ms
63,412 KB
testcase_26 AC 55 ms
63,412 KB
testcase_27 AC 52 ms
63,412 KB
testcase_28 AC 52 ms
63,412 KB
testcase_29 AC 56 ms
63,412 KB
testcase_30 AC 53 ms
63,412 KB
testcase_31 AC 52 ms
63,412 KB
testcase_32 AC 51 ms
63,412 KB
testcase_33 AC 51 ms
63,412 KB
testcase_34 AC 56 ms
63,412 KB
testcase_35 AC 51 ms
63,412 KB
testcase_36 AC 54 ms
63,412 KB
testcase_37 AC 52 ms
63,412 KB
testcase_38 AC 53 ms
63,412 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