結果

問題 No.3205 Range Pairwise Xor Query
ユーザー ルク
提出日時 2025-07-18 22:41:46
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,558 ms / 2,000 ms
コード長 1,569 bytes
コンパイル時間 319 ms
コンパイル使用メモリ 82,508 KB
実行使用メモリ 260,856 KB
最終ジャッジ日時 2025-07-18 22:42:06
合計ジャッジ時間 18,911 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

def 入力():
    # 入力を受け取る関数.
    return input()


def 数字(文字列):
    # 数字に変換する関数.
    return int(文字列)


def 足し算だ(元の値, 追加する値):
    # 足し算をする関数.
    return 元の値 + 追加する値


def 出力(値):
    # 出力を行う関数.
    print(値)


ぜろ = 数字('0')
いち = 数字('1')
にじゅうろく = 数字('26')
エヌ, キュー = map(数字, 入力().split())
リスト = list(map(数字, 入力().split()))
ビットリスト = [[ぜろ]*エヌ for _ in range(にじゅうろく)]
for インデックス1 in range(エヌ):
    for インデックス2 in range(にじゅうろく):
        if リスト[インデックス1] & (いち << インデックス2):
            ビットリスト[インデックス2][インデックス1] = いち
累積和リスト = []
for インデックス in range(にじゅうろく):
    累積和 = [ぜろ]
    for 値 in ビットリスト[インデックス]:
        累積和.append(累積和[-1] + 値)
    累積和リスト.append(累積和)
for _ in range(キュー):
    左, 右 = map(数字, 入力().split())
    左 -= いち
    答え = ぜろ
    for インデックス in range(にじゅうろく):
        # いちの個数を数える.
        いちの個数 = 累積和リスト[インデックス][右] - 累積和リスト[インデックス][左]
        ぜろの個数 = 右 - 左 - いちの個数
        答え += (いち << インデックス) * いちの個数 * ぜろの個数
    出力(答え)
0