#L0538. 位运算最大化
位运算最大化
题目描述
小明有一个长度为 的序列 和一个正整数 。保证对于所有 ,均有 。
对于序列 ,小明定义其「与值」等于:
$$a_1 \text{ and } a_2 \text{ and } \cdots \text{ and } a_n$$即序列 中所有数按位与得到的结果。
小明定义一次「左移」操作为:
- 选择一个不大于 的正整数 ,将 的值修改为 。
小明希望进行若干次「左移」操作(可以为 次),使序列 的「与值」尽可能大。
你需要帮助他求出,使序列 的「与值」达到最大值所需的「左移」操作次数的最小值。
输入格式
本题有多组测试数据。
输入的第一行包含两个整数 ,分别表示该测试点所属的子任务编号和测试数据组数。样例满足 。
接下来依次输入每组测试数据。对于每组测试数据:
- 第一行包含两个整数 。
- 第二行包含 个整数 。
输出格式
对于每组测试数据,输出一行,包含一个整数,表示使序列 的「与值」达到最大值所需的「左移」操作次数的最小值。
样例
0 4
3 4
1 3 8
2 3
4 0
3 5
3 6 11
3 4
5 7 135
0
8
3
</p>
提示
样例 1 解释
对于第 组测试数据,可以选择 进行 次操作,再选择 进行 次操作,使序列变为 ,「与值」等于 。可以证明「与值」所能达到的最大值即为 ,且至少需要 次操作。
对于第 组测试数据,无论怎么操作,「与值」都为 ,因此答案为 。
数据范围
设 表示单个测试点中 的和。
对于所有测试数据,均有:
- ;
- ,,;
- 对于所有 ,均有 。
本题采用捆绑测试。
- Subtask 1(15 points):,。
- Subtask 2(18 points):,,。
- Subtask 3(21 points):,,。
- Subtask 4(21 points):,,。
- Subtask 5(25 points):无特殊限制。
难度
普及+/提高-
通过率
—
尝试
0
已通过
0
- ID
- 1266
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者