atcoder#ABC185F. [ABC185F] Range Xor Query
[ABC185F] Range Xor Query
配点 : 点
問題文
長さ の整数列 があります。 あなたは今からこの数列について 個のクエリを処理します。 番目のクエリでは、 が与えられるので、以下の処理をしてください。
- のとき を で置き換える
- のとき $A_{X_i} \oplus A_{X_i + 1} \oplus A_{X_i + 2} \oplus \dots \oplus A_{Y_i}$ を出力する
ただし は と のビット単位 xor を表します。
ビット単位 xor とは
整数 のビット単位 xor 、 は、以下のように定義されます。
- を二進表記した際の () の位の数は、 を二進表記した際の の位の数のうち一方のみが であれば 、そうでなければ である。
例えば、 となります (二進表記すると: )。
制約
- は または
- なら かつ
- なら
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
$A_1 \hspace{7pt} A_2 \hspace{7pt} A_3 \hspace{5pt} \dots \hspace{5pt} A_N$
出力
であるような各クエリについて、答えを 行に つずつ、順に出力せよ。
3 4
1 2 3
2 1 3
2 2 3
1 2 3
2 2 3
0
1
2
個目のクエリでは を出力します。 個目のクエリでは を出力します。 個目のクエリでは が で置き換えられます。 個目のクエリでは を出力します。
10 10
0 5 3 4 7 0 0 0 1 0
1 10 7
2 8 9
2 3 6
2 1 6
2 1 10
1 9 4
1 6 1
1 6 3
1 1 7
2 3 5
1
0
5
3
0