CF2138A.Cake Assignment

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Cake Assignment

题目描述

Chocola 和 Vanilla 都喜欢蛋糕。今天,一家蛋糕店的经理送给她们总共 2k+12^{k+1} 个蛋糕。这些蛋糕被平均分配,所以她们每人一开始都收到了 2k2^k 个蛋糕。

然而,Chocola 和 Vanilla 现在想要重新分配蛋糕,使得 Chocola 最终有恰好 xx 个蛋糕,Vanilla 拥有剩下的 2k+1x2^{k+1}-x 个蛋糕。

在每一步操作中,她们可以执行以下两种操作之一,且只能选择其中之一:

  1. Chocola 把自己的一半蛋糕给 Vanilla。只有当 Chocola 当前蛋糕数为偶数时,这个操作才允许。
  2. Vanilla 把自己的一半蛋糕给 Chocola。只有当 Vanilla 当前蛋糕数为偶数时,这个操作才允许。

你的任务是确定最少需要多少步才能达到目标分配方式,并输出任意一种能达到最少步数的操作序列。

可以保证,在给定的约束条件下,总有合法解,并且最少所需的步数不超过 120120

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

每个测试用例的第一行包含两个整数 kkxx1k601 \le k \le 601x2k+111 \le x \le 2^{k+1}-1)——每个人一开始都有 2k2^k 个蛋糕,xx 是 Chocola 重新分配后应拥有的蛋糕数。

输出格式

对于每个测试用例,输出一个整数 nn0n1200 \le n \le 120),表示至少需要几步操作才能完成蛋糕的重新分配。

下一行输出 nn 个整数 o1,o2,,ono_1, o_2, \ldots, o_noi=1o_i=1oi=2o_i=2),表示第 ii 步执行的操作:oi=1o_i=1 代表本步 Chocola 给 Vanilla 一半蛋糕(操作 1),oi=2o_i=2 代表本步 Vanilla 给 Chocola 一半蛋糕(操作 2)。

说明/提示

在第一个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 x=3x=3 个蛋糕,Vanilla 有 2k+1x=52^{k+1}-x=5 个蛋糕。用 {a,b}\{a, b\} 表示当前 Chocola 拥有 aa 个蛋糕,Vanilla 拥有 bb 个蛋糕。

$$\{4, 4\} \xrightarrow{o_1 = 2} \{6, 2\} \xrightarrow{o_2 = 1} \{3, 5\}$$

在第二个测试用例中,Chocola 已有恰好 x=4x=4 个蛋糕,Vanilla 已有 2k+1x=42^{k+1} - x=4 个蛋糕,因此无需操作。

在第三个测试用例中,她们可以用以下步骤使得 Chocola 恰好有 x=7x=7 个蛋糕,Vanilla 有 2k+1x=92^{k+1}-x=9 个蛋糕。

$$\{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

建议全屏模式获得最佳体验