单点时限: 1.0 sec
内存限制: 512 MB
众所周知,Jumping 是数学の神,传说中祂提出了许多重要的恒等式,你是祂的一个信徒。
Jumping 第三恒等式(上帝公式):
$$
\text{主} = 6
$$
从 Jumping 第三恒等式中可以看出, $6$ 是非常重要的数字。而 C, C++, Java, Python
语言中按位异或运算符是 ^
,它在美式键盘的数字 6
的上面,因此你认为异或更加重要。
据古籍记载,Jumping 有一个包含 $n$ 个整数的数组 $a$ ,经过前缀异或和后,得到另一个数组 $b$ ,即:
$$
b_i = \begin{cases}
a_1 & ,i=1 \
b_{i-1} \oplus a_i & ,\mathrm{otherwise}
\end{cases}
$$
其中 $\oplus$ 表示 按位异或 操作。
但是现在原数组 $a$ 找不到了,只有新数组 $b$ 了,作为信徒,你能帮帮 Jumping 吗?
异或真值表:
$A$ $B$ $A\oplus B$ 0 0 0 0 1 1 1 0 1 1 1 0 按位异或是一种位运算操作,它会在二进制下按位比较,只有当两个对应位不同时结果才为 $1$ 。
举例:
$$
\begin{aligned}
5 &= (101)_2 \
6 &= (110)_2 \
5 \oplus 6 &= (101)_2 \oplus (110)_2 = (011)_2 = 3
\end{aligned}
$$
第一行包含一个整数 $n(1 \leq n \leq 10^5)$ 。
接下来 $n$ 行,每行包含一个整数, $b_i(0 \leq b[i] < 2^{31})$ 。
在 C/C++/Java
中,题目保证所有数字都可以用 int
类型存储。
输出 $n$ 行,每行包含一个整数,表示 $a_i$ 。
2 5 3
5 6