CF2138A.Cake Assignment

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

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

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

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

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

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

输入格式

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

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

输出格式

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

下一行输出 nn 个整数 o1,o2,…,ono_1, o_2, \ldots, o_n(oi=1o_i=1 或 oi=2o_i=2),表示第 ii 步执行的操作:oi=1o_i=1 代表本步 Chocola 给 Vanilla 一半蛋糕(操作 1),oi=2o_i=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=3x=3 个蛋糕,Vanilla 有 2k+1−x=52^{k+1}-x=5 个蛋糕。用 {a,b}\{a, b\} 表示当前 Chocola 拥有 aa 个蛋糕,Vanilla 拥有 bb 个蛋糕。

{4,4}→o1=2{6,2}→o2=1{3,5}\{4, 4\} \xrightarrow{o_1 = 2} \{6, 2\} \xrightarrow{o_2 = 1} \{3, 5\}

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

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

{8,8}→o1=2{12,4}→o2=2{14,2}→o3=1{7,9}\{8, 8\} \xrightarrow{o_1 = 2} \{12, 4\} \xrightarrow{o_2 = 2} \{14, 2\} \xrightarrow{o_3 = 1} \{7, 9\}

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页