题目描述
给定 n+1 个整数 a0…an。
对于整数 u,设它在二进制下为 1 的位分别为 k1,k2…km,那么它的权值 $f(u) = a_{k_1} \oplus a_{k_2} \oplus \dots \oplus a_{k_m}$。此处的二进制位的编号从右到左,依次为 0,1,2…。其中 ⊕ 表示 按位异或 符号。
你想要知道有多少个 0≤u≤2n−1 使得 f(u)=f(u+1)。为了方便,请你用 二进制形式 输出答案(不取模)。
请注意:输出不能包含前导 0,除非答案为 0。
输入格式
本题有多组测试数据。
第一行输入一个整数 T,表示测试数据组数。
接下来依次输入每组测试数据。对于每组测试数据:
- 第一行输入一个正整数 n。
- 第二行输入 n+1 个整数 a0…an。
输出格式
对于每组数据,输出一行一个二进制整数,表示答案。
再次提示:输出不能包含前导 0,除非答案为 0。
5
2
0 1 2
3
1 3 3 1
4
2 2 5 4 2
5
7 0 3 4 0 1
6
5 2 1 8 6 0 9
10
1
100
11
0
提示
「样例解释 #1」
对于第 1 组数据,
- (0)10=(0)2,所以 f(0)=0;
- (1)10=(1)2,所以 f(1)=a0=0;
- (2)10=(10)2,所以 f(2)=a1=1;
- (3)10=(11)2,所以 f(3)=a0⊕a1=0⊕1=1;
- (4)10=(100)2,所以 f(4)=a2=2。
这其中有 f(0)=f(1),f(2)=f(3),所以输出 (2)10=(10)2。
「数据范围」
设 ∑n 表示单个测试点中 n 的和。
对于所有数据,1≤T≤103,1≤n≤2×105,∑n≤6×105,0≤ai≤230−1。
只有你通过本题的所有测试点,你才能获得本题的分数。