atcoder#ABC171E. [ABC171E] Red Scarf

[ABC171E] Red Scarf

题目描述

猫のすぬけくんが N (偶数) N\ (\textbf{偶数}) 匹います。各すぬけくんには 1, 2, , N 1,\ 2,\ \ldots,\ N の番号が振られています。

各すぬけくんは首に赤いスカーフを巻いており、スカーフにはそのすぬけくんが一番好きな非負整数が 1 1 つ書き込まれています。

すぬけくんたちは最近、整数の xor(排他的論理和)と呼ばれる演算を覚えました。

xor とは n n 個の非負整数 x1,x2, , xn x_1,x_2,\ \ldots,\ x_n について、それらの xor、 $ x_1~\textrm{xor}~x_2~\textrm{xor}~\ldots~\textrm{xor}~x_n $ は以下のように定義されます。

  • $ x_1~\textrm{xor}~x_2~\textrm{xor}~\ldots~\textrm{xor}~x_n $ を二進表記した際の 2k(k  0) 2^k(k\ \geq\ 0) の位の数は、x1,x2, , xn x_1,x_2,\ \ldots,\ x_n のうち、二進表記した際の 2k(k  0) 2^k(k\ \geq\ 0) の位の数が 1 1 となるものの個数が奇数ならば 1 1 、そうでなければ 0 0 となる。

例えば、3 xor 5 = 6 3~\textrm{xor}~5\ =\ 6 となります。 早速この演算を使いたくなったすぬけくんたちは、自分以外のすぬけくんのスカーフに書かれた整数の xor を計算することにしました。

番号 i i が振られたすぬけくんが計算した、自分以外のすぬけくんのスカーフに書かれた整数の xor が ai a_i であることが分かっています。 この情報を元に、各すぬけくんのスカーフに書かれた整数を特定してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 a2 a_2 \ldots aN a_N

输出格式

1 1 行に N N 個の整数を空白区切りで出力せよ。

このうち左から i i 番目の整数は、番号 i i が振られたすぬけくんのスカーフに書かれた整数を表すものとする。

与えられた条件を満たす解が複数存在する場合、どれを出力しても構わない。

题目大意

给出有 nnNN 为偶数)个数的序列 aa,求还原序列 bb,使 aia_i 为除 bib_i 以外所有数的异或和。例如 a1=b2b3bna_1=b_2 \oplus b_3\oplus\dots\oplus b_na2=b1b3bna_2=b_1\oplus b_3\oplus \dots\oplus b_n\dotsan=b1b2bn1a_n=b_1\oplus b_2\oplus \dots\oplus b_{n-1}

4
20 11 9 24
26 5 7 22

提示

制約

  • 入力はすべて整数である
  • 2  N  200000 2\ \leq\ N\ \leq\ 200000
  • N N 偶数 \textbf{偶数}
  • 0  ai  109 0\ \leq\ a_i\ \leq\ 10^9
  • 与えられた情報と整合するようなスカーフ上の整数の組合せが存在する

Sample Explanation 1

- 5 xor 7 xor 22 = 20 5~\textrm{xor}~7~\textrm{xor}~22\ =\ 20 - 26 xor 7 xor 22 = 11 26~\textrm{xor}~7~\textrm{xor}~22\ =\ 11 - 26 xor 5 xor 22 = 9 26~\textrm{xor}~5~\textrm{xor}~22\ =\ 9 - 26 xor 5 xor 7 = 24 26~\textrm{xor}~5~\textrm{xor}~7\ =\ 24 より、この出力は与えられた情報と整合します。