欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2138A.Cake Assignment
Cake Assignment
题目描述
Chocola 和 Vanilla 都喜欢蛋糕。今天,一家蛋糕店的经理送给她们总共 个蛋糕。这些蛋糕被平均分配,所以她们每人一开始都收到了 个蛋糕。
然而,Chocola 和 Vanilla 现在想要重新分配蛋糕,使得 Chocola 最终有恰好 个蛋糕,Vanilla 拥有剩下的 个蛋糕。
在每一步操作中,她们可以执行以下两种操作之一,且只能选择其中之一:
- Chocola 把自己的一半蛋糕给 Vanilla。只有当 Chocola 当前蛋糕数为偶数时,这个操作才允许。
- Vanilla 把自己的一半蛋糕给 Chocola。只有当 Vanilla 当前蛋糕数为偶数时,这个操作才允许。
你的任务是确定最少需要多少步才能达到目标分配方式,并输出任意一种能达到最少步数的操作序列。
可以保证,在给定的约束条件下,总有合法解,并且最少所需的步数不超过 。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含两个整数 和 (,)——每个人一开始都有 个蛋糕, 是 Chocola 重新分配后应拥有的蛋糕数。
输出格式
对于每个测试用例,输出一个整数 (),表示至少需要几步操作才能完成蛋糕的重新分配。
下一行输出 个整数 ( 或 ),表示第 步执行的操作: 代表本步 Chocola 给 Vanilla 一半蛋糕(操作 1), 代表本步 Vanilla 给 Chocola 一半蛋糕(操作 2)。
说明/提示
在第一个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 个蛋糕,Vanilla 有 个蛋糕。用 表示当前 Chocola 拥有 个蛋糕,Vanilla 拥有 个蛋糕。
$$\{4, 4\} \xrightarrow{o_1 = 2} \{6, 2\} \xrightarrow{o_2 = 1} \{3, 5\}$$在第二个测试用例中,Chocola 已有恰好 个蛋糕,Vanilla 已有 个蛋糕,因此无需操作。
在第三个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 个蛋糕,Vanilla 有 个蛋糕。
$$\{8, 8\} \xrightarrow{o_1 = 2} \{12, 4\} \xrightarrow{o_2 = 2} \{14, 2\} \xrightarrow{o_3 = 1} \{7, 9\}$$由 ChatGPT 5 翻译
样例
4
2 3
2 4
3 7
2 5
2
2 1
0
3
2 2 1
2
1 2
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |