问题 I: A 是签到题?

问题 I: A 是签到题?

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

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 ≤ n105),具体输入含义见题干。

第二行依次输入n个整数a1, a2, …… , an(1ai105),具体输入含义见题干。

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