結果
問題 |
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 |
ソースコード
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(にじゅうろく): # いちの個数を数える. いちの個数 = 累積和リスト[インデックス][右] - 累積和リスト[インデックス][左] ぜろの個数 = 右 - 左 - いちの個数 答え += (いち << インデックス) * いちの個数 * ぜろの個数 出力(答え)