CF1669H Maximal AND

题目描述

令 $\mathsf{AND}$ 表示[按位与运算](https://en.wikipedia.org/wiki/Bitwise_operation#AND),$\mathsf{OR}$ 表示[按位或运算](https://en.wikipedia.org/wiki/Bitwise_operation#OR)。 给定一个长度为 $n$ 的数组 $a$ 和一个非负整数 $k$。你最多可以对数组执行 $k$ 次如下操作: - 选择一个下标 $i$($1 \leq i \leq n$),将 $a_i$ 替换为 $a_i$ $\mathsf{OR}$ $2^j$,其中 $j$ 是 $0$ 到 $30$ 之间的任意整数。换句话说,在一次操作中,你可以选择一个下标 $i$($1 \leq i \leq n$),并将 $a_i$ 的第 $j$ 位(二进制下,从低到高编号)设置为 $1$($0 \leq j \leq 30$)。 请输出在最多进行 $k$ 次操作后,$a_1$ $\mathsf{AND}$ $a_2$ $\mathsf{AND}$ $\dots$ $\mathsf{AND}$ $a_n$ 的最大可能值。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le n \le 2 \cdot 10^5$,$0 \le k \le 10^9$)。 接下来一行包含 $n$ 个整数,表示数组 $a$($0 \leq a_i < 2^{31}$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一行,表示在最多进行 $k$ 次操作后,$a_1$ $\mathsf{AND}$ $a_2$ $\mathsf{AND}$ $\dots$ $\mathsf{AND}$ $a_n$ 的最大可能值。

说明/提示

对于第一个测试用例,我们可以用 $2$ 次操作将最后两个元素的第 $1$ 位($2^1$)设置为 $1$,从而得到数组 $[2, 3, 3]$,此时 $\mathsf{AND}$ 的值为 $2$。 对于第二个测试用例,无法进行任何操作,因此答案就是整个数组的 $\mathsf{AND}$,即 $4$。 由 ChatGPT 4.1 翻译