题目来源:https:atcoder.jpcontestsabc390tasksabc390_d 有 个袋子,编号为 。第 个袋子初始装有 块石头。允许进行如下操作任意次数(包括 次):选择两个袋子 与 ,将袋子 中的全部石头移入袋子 ,使得 的石头数变为 , 的石头数增加相应数量。 在进行若干次操作后,设第 个袋子的最终石头数为 。请计算不同的 的取值个数,其中 表示按位 XOR。可以证明,在本题的约束条件下,可能的取值是有限的。 【名词解释】 按位 XOR:对非负整数 ,其按位 XOR 的二进制定义为:对所有 ,在 的二进制表示的 位上,当且仅当 与 的该位中恰有一位为 时该位为 ,否则为 。 示例:(二进制为 )。
输入描述:
输入为单组数据。第一行输入整数 ,表示袋子数量。第二行输入 个整数 ,表示各袋子的初始石头数。所有输入值均为整数。


输出描述:
输出一个整数,表示重复执行上述操作后, 的不同可能值的数量。
示例1

输入

3
2 5 7

输出

3

说明

\hspace{15pt}样例解释:
\hspace{23pt}\bullet\, 若选择袋子 13 执行一次操作(将袋子 1 的石头移入袋子 3),则三个袋子的石头数变为 B_1=0,B_2=5,B_3=9,此时 B_1\oplus B_2\oplus B_3=0\oplus 5\oplus 9=12
\hspace{23pt}\bullet\, 在所有可能的操作序列中,异或值的集合为 \{0,12,14\},共有 3 个不同取值,故答案为 3
示例2

输入

2
100000000000000000 100000000000000000

输出

2

说明

\hspace{15pt}样例解释:
\hspace{23pt}\bullet\, 初始异或为 A_1\oplus A_2=0(因为两数相等)。
\hspace{23pt}\bullet\, 若将其中一个袋子的石头全部移入另一个袋子,则最终为 [0,2A_1][2A_1,0],此时异或为 2A_1。因此可能的异或值为 \{0,2A_1\},数量为 2
示例3

输入

6
71 74 45 34 31 60

输出

84

备注:
本题已于下方时间节点更新,请注意题解时效性:1. 2025-12-23 拓展时间限制为 3s(与 ATc 原题保持一致)。
加载中...