#3071. Red Scarf

0
    ID: 3071 传统题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>AtCoderabc171EGESP 5级位运算(复杂)数组

Red Scarf

Red Scarf

题目描述

有 NN 只 Snuke 猫,编号为 1,2,…,N1, 2, \ldots, N,其中 NN 为 偶数。 每只 Snuke 猫戴着一条红色围巾,围巾上写着它喜欢的非负整数。 最近,他们学会了称为 xor(异或)的运算。

什么是 xor?

对于 nn 个非负整数 x1,x2,…,xnx_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$ 以二进制表示时,2k2^k 位(k≥0k \geq 0)的数字为 11 当且仅当在 x1,x2,…,xnx_1, x_2, \ldots, x_n 中,二进制表示在 2k2^k 位上为 11 的整数个数为奇数;若该计数为偶数则该位为 00。

例如,3 xor 5=63~\textrm{xor}~5 = 6。

他们希望能快速使用此运算,所以每个人都计算了不包含自己围巾的那些整数的 xor。 我们知道第 $i$ 只 Snuke 猫计算的 xor,即除第 $i$ 只猫的围巾外其它围巾上写的整数的 xor 为 $a_i$。 利用这些信息,恢复每只 Snuke 猫围巾上写的整数。

输入格式

标准输入的格式如下: NN a1a_1 a2a_2 …\ldots aNa_N

输出格式

打印一行包含用空格分隔的 NN 个整数。 从左起第 ii 个整数应表示写在第 ii 只 Snuke 猫围巾上的整数。 如果存在多个可能的解,可以输出其中任意一个。

4
20 11 9 24
26 5 7 22

提示

输入中的所有数值均为整数。 2≤N≤2000002 \leq N \leq 200000 NN 为 偶数。 0≤ai≤1090 \leq a_i \leq 10^9 存在一组围巾上的整数与给定信息一致。5 xor 7 xor 22=205~\textrm{xor}~7~\textrm{xor}~22 = 20 26 xor 7 xor 22=1126~\textrm{xor}~7~\textrm{xor}~22 = 11 26 xor 5 xor 22=926~\textrm{xor}~5~\textrm{xor}~22 = 9 26 xor 5 xor 7=2426~\textrm{xor}~5~\textrm{xor}~7 = 24

因此,该输出与给定信息一致。

标签: AtCoder|abc171E

来源

AtCoder|abc171E