题目描述
给定一个非负整数的序列 A=(A1,A2,ldots,AN)。你可以进行以下操作任意次数(可能为零)。
- 选择一个整数 xinA1,A2,ldots,AN。
- 对于每个 i,将 Ai 替换为 Aioplusx(其中 oplus 表示按位异或运算)。
找到在进行操作后 sumi=1NAi 的最大可能值。
什么是按位异或?
非负整数 A 和 B 的按位异或 AoplusB 定义如下:
- 当将 AoplusB 用二进制表示时,在第 2k 个位置上(kgeq0),如果 A 和 B 中有且仅有一个数为 1,那么这个位置上的数字为 1,否则为 0。
例如,我们有 3oplus5=6 (用二进制表示为 011oplus101=110)。
约束条件
- 1leqNleq3times105
- 0leqAi<230
输入
从标准输入中按以下格式给出输入:
N
A1 A2 ldots AN
输出
打印在进行操作后 sumi=1NAi 的最大可能值。
示例输入 1
5
1 2 3 4 5
示例输出 1
19
下面是实现 sumi=1NAi=19 的一系列操作。
- 初始时,序列 A 是 (1,2,3,4,5)。
- 使用 x=1 进行一次操作,将它变为 (0,3,2,5,4)。
- 再使用 x=5 进行一次操作,将它变为 (5,6,7,0,1),此时 sumi=1NAi=5+6+7+0+1=19。
示例输入 2
5
10 10 10 10 10
示例输出 2
50
不进行任何操作,得到 sumi=1NAi=50。
示例输入 3
5
3 1 4 1 5
示例输出 3
18