P17829 [CSP-J 2026] 按位与 / and
题目:
小 R 有
小 X 给了小 R 一个正整数
你需要帮助小 R 求出,他能选出的
输入格式
从文件 and.in 中读入数据。
输入的第一行包含两个正整数
输入的第二行包含
输出格式
输出到文件 and.out 中。
输出一行一个非负整数,表示小 R 能选出的
输入输出样例 #1
输入 #1
4 2 |
输出 #1
12 |
输入输出样例 #2
输入 #2
5 3 |
输出 #2
7 |
说明/提示
样例 1 解释
小 R 有
- 若小 R 选择
,则按位与的值为 ; - 若小 R 选择
,则按位与的值为 ; - 若小 R 选择
,则按位与的值为 ; - 若小 R 选择
,则按位与的值为 。
因此,小 R 能选出的
样例 2 解释
若小 R 选择
样例 3
见题目目录下的 and/3.in 与 and/3.ans。
该样例满足测试点
样例 4
见题目目录下的 and/4.in 与 and/4.ans。
该样例满足测试点
样例 5
见题目目录下的 and/5.in 与 and/5.ans。
该样例满足测试点
数据范围
对于所有测试数据,均有:
;- 对于所有
( ),均有 。
::cute-table{tuack}
| 测试点编号 | 特殊性质 | |||
|---|---|---|---|---|
| 无 | ||||
| 无 | ||||
| 无 | ||||
| 无 | ||||
| 无 | ||||
| A | ||||
| B | ||||
| 无 | ||||
| 无 | ||||
| 无 |
特殊性质 A:对于所有
特殊性质 B:存在非负整数
题解:
|
题目中,二进制下,某一位想为 1,必须这 m 个数在这一位都为 1。
因此从高位到低位贪心判断:当前位能不能保留,要看“当前候选集合里有多少个数这一位是 1”。
步骤:
先把所有数都看成 30 位二进制字符串(因为 ai < 2^30)
从第 29 位到第 0 位枚举
统计当前候选集合中,当前位是 1 的数有多少个
若这个数目 >= m
说明这一位可以保留为 1
把答案这一位设为 1
并且只保留当前位为 1 的数,继续处理更低位
若这个数目 < m
这一位不能保留,答案这一位为 0
最终把得到的二进制答案转换成十进制输出
- 标题: P17829 [CSP-J 2026] 按位与 / and
- 作者: oWuGi7s6
- 创建于 : 2026-11-01 19:35:11
- 更新于 : 2026-11-01 19:44:59
- 链接: https://owugi7s6.netlify.app/2026/11/01/p17829/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。