问题3177--A 是签到题?

3177: A 是签到题?

时间限制: 1 Sec  内存限制: 128 MB
提交: 98  解决: 60
[状态] [讨论版] [提交] [命题人:]
题目描述

C 尝试了出题人钦定的 "签到题",发现他一点都不简单。

通过黑客后台数据,小 C 找到了每道题目经过加密的难度系数以及对应的解密算法,于是小 C 想知道出题人钦定的 "签到题" 的难度究竟是多少。

  • 关于经过加密的难度系数以及对应的解密算法:

    经过加密的难度系数由一个整数 n 和一个长度为 n 的数组 a 组成。在解密时,你需要找到一个数 x ,使得 x 与数组 a 中的所有元素依次异或后最终得数为 0 。所得的 xn 在二进制表示下对应位不同的数量即为题目的真实难度。

  • 关于异或

    异或使用符号 表示,在 C 语言中可用符号 "^" 进行运算。

    非负整数 xy 的异或是指对它们二进制表示中的每一位进行如下运算得到的结果:

    • xy 的第 k 个二进制位相同,结果的第 k 个二进制位为 0

    • xy 的第 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 ),具体输入含义见题干。

输出
请在一行中输出一个整数,表示 出题人钦定的 "签到题" 的真正难度。
样例输入 Copy
7
1 2 3 4 5 6 7
样例输出 Copy
3
来源/分类