题目描述
给定 N 个非负整数 A1,A2,...,AN 和另一个非负整数 K。
对于介于 0 和 K 之间(包括边界)的整数 X,令 f(X)=(X 异或 A1) + (X 异或 A2) + ... + (X 异或 AN)。
这里,对于非负整数 a 和 b,a 异或 b 表示 a 和 b 的按位异或运算。
找到 f 的最大值。
什么是异或运算?
整数 a 和 b 的按位异或运算,X,定义如下:
- 当 X 用二进制表示时,在第 2k 位上 (kgeq0) 的数字为 1,如果在 a 和 b 的二进制表示中,恰好有一个数字在第 2k 位上为 1,否则为 0。
例如,3 异或 5=6。(用二进制表示:011 异或 101=110。)
约束条件
- 输入中的所有值均为整数。
- 1leqNleq105
- 0leqKleq1012
- 0leqAileq1012
输入
从标准输入读取数据,具体格式如下:
N K
A1 A2 ... AN
输出
打印出 f 的最大值。
示例输入 1
3 7
1 6 3
示例输出 1
14
最大值为:f(4)=(4 异或 1)+(4 异或 6)+(4 异或 3)=5+2+7=14。
示例输入 2
4 9
7 4 0 3
示例输出 2
46
示例输入 3
1 0
1000000000000
示例输出 3
1000000000000