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