欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1884B.Haunted House
Haunted House
题目描述
给定一个恰好由 位组成的二进制数(可能有前导零)。例如,当 时,数字 的二进制表示为 ,当 时,数字 的二进制表示为 。
现在固定一个整数 ,满足 。每次操作你可以交换二进制表示中任意两个相邻的位。你的目标是找出使该数能被 整除所需的最少操作次数,或者判断是否不可能实现。
请注意,对于每个 ,你都需要独立地解决这个问题。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 (),表示二进制数的长度。
每个测试用例的第二行包含一个长度为 的字符串,仅由 和 组成,表示该数的二进制表示。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,对于每个 ,输出使该数能被 整除所需的最少操作次数,或者如果无法实现则输出 。
说明/提示
在第一个测试用例中,无法交换任何元素,且数字 不能被 整除。
在第二个测试用例中,初始数字为 。它不能被 整除,但如果进行一次操作,可以得到二进制表示为 的数字,即十进制的 ,因此可以被 整除。但该数字不能被 整除,且无法通过操作得到其他数字。
在第三个测试用例中,初始数字为 。对于 ,无需进行任何操作,因为初始数字已经能被 整除。对于 ,可以通过一次操作交换前两位(得到二进制 ,即十进制 )。对于 ,无解。
由 ChatGPT 4.1 翻译
样例
6
1
1
2
01
3
010
5
10101
7
0000111
12
001011000110
-1
1 -1
0 1 -1
1 3 -1 -1 -1
3 6 9 12 -1 -1 -1
0 2 4 6 10 15 20 -1 -1 -1 -1 -1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |