#CF2138A. 蛋糕分配
蛋糕分配
题目描述
巧克拉(Chocola)和凡妮拉(Vanilla)都喜欢蛋糕。 今天,蛋糕店的店长给了她们一共 块蛋糕。最开始蛋糕被平分了,所以两人一开始各有 块蛋糕。
现在她们想要重新分配蛋糕,使得巧克拉最终恰好有 块蛋糕,凡妮拉得到剩下的 块蛋糕。
每一步操作中,她们只能执行下面两种操作之一:
- 巧克拉把自己当前蛋糕数的一半给凡妮拉。只有当巧克拉当前拥有偶数块蛋糕时,该操作才允许执行。
- 凡妮拉把自己当前蛋糕数的一半给巧克拉。只有当凡妮拉当前拥有偶数块蛋糕时,该操作才允许执行。
你需要求出达到目标分配方案所需的最少操作次数,并输出任意一组达到最少步数的合法操作序列。
题目保证在给定限制下一定存在合法解,且最少操作次数不超过 。
输入格式
每个测试包含多组数据。 第一行输入测试用例数量 ()。
每组测试用例格式如下: 第一行包含两个整数 和 ()。 含义:两人初始各有 块蛋糕, 是巧克拉最终需要拥有的蛋糕数量。
输出格式
对于每组测试用例:
- 第一行输出一个整数 (),表示最少操作次数。
- 第二行输出 个整数 ,其中:
- :第 步执行操作 1(巧克拉分一半给凡妮拉)
- :第 步执行操作 2(凡妮拉分一半给巧克拉)
样例输入
4
2 3
2 4
3 7
2 5
样例输出
2
2 1
0
3
2 2 1
2
1 2
样例解释
第一个测试用例: 总蛋糕数 ,初始状态 ,目标巧克拉有 块,凡妮拉有 块。 操作过程:
$$\{4,4\}\xrightarrow{o_1=2}\{6,2\}\xrightarrow{o_2=1}\{3,5\} $$第二个测试用例: 巧克拉已经有 块,无需操作,直接输出 。
第三个测试用例: 初始 ,目标巧克拉 块,凡妮拉 块。
$$\{8,8\}\xrightarrow{o_1=2}\{12,4\}\xrightarrow{o_2=2}\{14,2\}\xrightarrow{o_3=1}\{7,9\} $$