题目描述
给定 n 个非负整数 a1,a2,⋯,an,你需要确定一个非负整数 x,使得 $a _ 1 \oplus a _ 2 \oplus \cdots \oplus a _ n \oplus x$ 最小。
你需要计算 x 和 $a _ 1 \oplus a _ 2 \oplus \cdots \oplus a _ n \oplus x$。
其中 ⊕ 代表异或,x⊕y 在 C++ 中可表示为 x ^ y。
对于两个非负整数 x,y,它们的异或是指,将它们作为二进制数,对二进制表示中的每一位进行如下运算得到的结果:
- x 和 y 的这一位上不同时,结果的这一位为 1;
 
- x 和 y 的这一位上相同时,结果的这一位为 0。
 
例如:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0。
输入格式
输入共两行。
第一行一个整数 n,代表序列 a 的长度。
第二行 n 个整数 a1,a2,⋯,an,代表序列 a。
输出格式
输出共一行两个整数 x 和 $a _ 1 \oplus a _ 2 \oplus \cdots \oplus a _ n \oplus x$。
2
1 2
3 0
2
7 7
0 0
提示
数据规模与约定
对于 100% 的数据,1≤n≤106,0≤ai≤1018。
| 测试点 | 
n | 
ai | 
特殊性质 | 
| 1 | 
=1 | 
≤103 | 
无 | 
| 2 | 
=2 | 
a1=a2 | 
| 3∼4 | 
无 | 
| 5 | 
≤103 | 
=0 | 
| 6∼8 | 
≤103 | 
| 9∼11 | 
≤106 | 
| 12∼13 | 
≤1 | 
| 14∼20 | 
≤1018 |