CF2138A.Cake Assignment
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Chocola 和 Vanilla 都喜欢蛋糕。今天,一家蛋糕店的经理送给她们总共 2k+1 个蛋糕。这些蛋糕被平均分配,所以她们每人一开始都收到了 2k 个蛋糕。
然而,Chocola 和 Vanilla 现在想要重新分配蛋糕,使得 Chocola 最终有恰好 x 个蛋糕,Vanilla 拥有剩下的 2k+1−x 个蛋糕。
在每一步操作中,她们可以执行以下两种操作之一,且只能选择其中之一:
- Chocola 把自己的一半蛋糕给 Vanilla。只有当 Chocola 当前蛋糕数为偶数时,这个操作才允许。
- Vanilla 把自己的一半蛋糕给 Chocola。只有当 Vanilla 当前蛋糕数为偶数时,这个操作才允许。
你的任务是确定最少需要多少步才能达到目标分配方式,并输出任意一种能达到最少步数的操作序列。
可以保证,在给定的约束条件下,总有合法解,并且最少所需的步数不超过 120。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤1000),表示测试用例的数量。
每个测试用例的第一行包含两个整数 k 和 x(1≤k≤60,1≤x≤2k+1−1)——每个人一开始都有 2k 个蛋糕,x 是 Chocola 重新分配后应拥有的蛋糕数。
输出格式
对于每个测试用例,输出一个整数 n(0≤n≤120),表示至少需要几步操作才能完成蛋糕的重新分配。
下一行输出 n 个整数 o1,o2,…,on(oi=1 或 oi=2),表示第 i 步执行的操作:oi=1 代表本步 Chocola 给 Vanilla 一半蛋糕(操作 1),oi=2 代表本步 Vanilla 给 Chocola 一半蛋糕(操作 2)。
输入输出样例
输入#1
4 2 3 2 4 3 7 2 5
输出#1
2 2 1 0 3 2 2 1 2 1 2
说明/提示
在第一个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 x=3 个蛋糕,Vanilla 有 2k+1−x=5 个蛋糕。用 {a,b} 表示当前 Chocola 拥有 a 个蛋糕,Vanilla 拥有 b 个蛋糕。
{4,4}o1=2{6,2}o2=1{3,5}
在第二个测试用例中,Chocola 已有恰好 x=4 个蛋糕,Vanilla 已有 2k+1−x=4 个蛋糕,因此无需操作。
在第三个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 x=7 个蛋糕,Vanilla 有 2k+1−x=9 个蛋糕。
{8,8}o1=2{12,4}o2=2{14,2}o3=1{7,9}
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?