C 尝试了出题人钦定的 "签到题",发现他一点都不简单。
通过黑客后台数据,小 C 找到了每道题目经过加密的难度系数以及对应的解密算法,于是小 C 想知道出题人钦定的 "签到题" 的难度究竟是多少。
关于经过加密的难度系数以及对应的解密算法:
经过加密的难度系数由一个整数 n 和一个长度为 n 的数组 a 组成。在解密时,你需要找到一个数 x ,使得 x 与数组 a 中的所有元素依次异或后最终得数为 0 。所得的 x 与 n 在二进制表示下对应位不同的数量即为题目的真实难度。
关于异或
异或使用符号 ⊕ 表示,在 C 语言中可用符号 "^" 进行运算。
非负整数 x 和 y 的异或是指对它们二进制表示中的每一位进行如下运算得到的结果:
若 x 和 y 的第 k 个二进制位相同,结果的第 k 个二进制位为 0 。
若 x 和 y 的第 k 个二进制位不同,结果的第 k 个二进制位为 1 。
例如:二进制下 (110)2 与 (011)2 进行异或,第 0 个二进制位不同,第 1 个二进制位相同,第 3 个二进制位不同,所以两者异或后结果为 (101)2 。
注意:二进制位从右向左,从 0 开始编号。高位缺少的二进制规定为 0 。
异或具有如下性质:
归零性: a ⊕ a = 0 ;
交换律: a ⊕ b = b ⊕ a ;
结合律: (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)
n ( 1 ≤ n ≤ 105 ),具体输入含义见题干。
第二行依次输入 n 个整数 a1, a2, …… , an ( 1 ≤ ai ≤ 105
7
1 2 3 4 5 6 7
3