#CF4028. 最大的与运算

最大的与运算

题目描述

& 表示"按位与"运算,| 表示"按位或"运算。

给您一个长度为 nn 的数组 aa 和一个非负整数 kk。您最多可以对该数组执行 kk 次操作:

选择索引 i(1in)i(1≤i≤n),并用 ai  2ja_i\ |\ 2^j 替换 aia_i,其中 jj 是介于 003030 之间的任意整数(包括 003030)。换句话说,在操作中,您可以任意选择一个数字 aia_i 并将其第 jj 位修改为 1(0j30)1(0≤j≤30)

输出执行不超过 kk 次操作后,a1&a2&&ana_1\&a_2\&…\&a_n 的最大可能值。

输入格式

输入的第一行包含单个整数 t(1t100)t(1≤t≤100) 表示测试用例的数量。测试用例描述如下。

每个测试用例的第一行包含整数 nnk(1n2×1050k109)k(1≤n≤2\times10^5,0≤k≤10^9)

接下来是一行,包含 nn 个整数,描述数组 a(0ai231)a(0≤a_i<2^{31})

保证所有测试用例的 nn 之和不超过 2×1052\times10^5

输出格式

对于每个测试用例,输出一行,表示在执行最多 kk 次操作后, a1 & a2 && ana_1\ \&\ a_2\ \&…\&\ a_n 的最大可能值。

测试样例

4
3 2
2 1 1
7 0
4 6 6 28 6 6 12
1 30
0
4 4
3 1 3 1
2
4
2147483646
1073741825

样例说明

对于第一个测试用例,我们可以使用 22 个操作将后面两个元素的位 1(21)1(2^1) 置为 11,从而获得数组 [2,3,3][2,3,3],其 & 值等于 22

对于第二个测试用例,我们不能执行任何操作,因此答案只是整个数组的按位与,即 44