题目描述
Madoka要报名zzuli。但在入学计算机科学考试期间,她偶然发现了一项艰巨的任务:
AND 表示按位与,OR 表示按位或。
你有一个长度为 n 的数组 a 和一个非负整数 k 。你可以在 a 数组上做以下操作:
选出一个下标 i (1<= i<= n),将 ai 替换为 ( ai OR 2^j) ,(0 <=j<= 30).也就是说将二进制下的 ai 的第 j+1 位赋为 1.
最多做 k 次操作。
输出操作后 a1 AND a2 AND ...... AND an 的最大值。
为Madoka解决这个问题,帮助她进入 `zzuli` !
输入
输入的第一行包含一个整数 t (1 <= t <= 100) — 测试用例的数量。测试用例的描述如下。
每个测试用例的第一行包含整数 n 和 k (1 <= n <= 2 * 10^5,0 <= k <= 10^9).
第二行是数组 a 的 n 个数 a1 ,a2... an(0 <=ai < 2^31 )
保证所有测试用例中的n总和不超过 2 * 10^5
输出
输出经过最多k次操作后 a1 AND a2 AND ...... AND an 的最大值。
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