题目描述
長さ N の整数列 A=(A1,A2,⋯,AN),及び整数 M が与えられます.
各 k=1,2,⋯,M について,以下の操作をちょうど k 回行ったあとの AN の値を求めてください.
- すべての i (1 ≤ i ≤ N) について,Ai の値を A1 ⊕ A2 ⊕ ⋯ ⊕ Ai で置き換える. この置き換えはすべての i に対して同時に行う.
ただしここで,⊕ はビット単位 XOR 演算を表します.
ビット単位 XOR 演算とは 非負整数 A, B のビット単位 XOR 、A ⊕ B は、以下のように定義されます。
- A ⊕ B を二進表記した際の 2k (k ≥ 0) の位の数は、A, B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3 ⊕ 5 = 6 となります (二進表記すると: 011 ⊕ 101 = 110)。
一般に k 個の整数 p1, p2, p3, …, pk のビット単位 XOR は $ (\dots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \dots\ \oplus\ p_k) $ と定義され、これは p1, p2, p3, … pk の順番によらないことが証明できます。
输入格式
入力は以下の形式で標準入力から与えられる.
N M A1 A2 ⋯ AN
输出格式
各 k に対する答えを空白区切りで出力せよ.
题目大意
给定一个长度为 n 的序列 A(下标从 1 开始),还有一个整数 m。
对 k=1,2,⋯,m,求经过如下操作 k 次后 An 的值:
- 对每个 i(1≤i≤n),同时让 Ai:=A1⊕A2⊕⋯⊕Ai。
3 2
2 1 3
0 1
10 12
721939838 337089195 171851101 1069204754 348295925 77134863 839878205 89360649 838712948 918594427
716176219 480674244 678890528 642764255 259091950 663009497 942498522 584528336 364872846 145822575 392655861 844652404
提示
制約
- 1 ≤ N ≤ 106
- 1 ≤ M ≤ 106
- 0 ≤ Ai < 230
- 入力される値はすべて整数
Sample Explanation 1
操作の度に A は以下のように変化します. - 初期状態:A=(2,1,3) - 1 回目の操作後:A=(2,3,0) - 2 回目の操作後:A=(2,1,1)