倒水问题
题目背景
**输入输出已更改,请不要直接提交原先的代码。**
题目描述
假定两个水壶 $A$ 和 $B$,供水量不限。可以使用三种方法装水:
- 给一个水壶装水;
- 把一个水壶倒空;
- 从一个水壶倒进另一个水壶。
当从一个水壶倒进另一个水壶时,如果第一个水壶倒空,或者第二个水壶装满就不能再倒了。例如,一个水壶 $A$ 是 $5$ 加仑和另一个水壶 $B$ 是 $6$ 加仑,水量是 $8$ 加仑,则从水壶 $A$ 倒进水壶 $B$ 时,让水壶 $B$ 充满水而水壶 $A$ 剩 $3$ 加仑水。
问题有 $3$ 个参数:$C_a$,$C_b$ 和 $N$,分别表示水壶 $A$ 和 $B$ 的容量,目标水量 $N$。问题的目标是,给出一系列倒水的步骤,使水壶 $B$ 中的水量恰好是 $N$。
输入输出格式
输入格式
第一行为数据组数 $T$。
接下来的 $T$ 行,每行三个数字 $C_a$,$C_b$ 和 $N$,意义如题目所示。
$T$ 不超过 $30$,$0<C_a\le C_b$,$N\le C_b\le 1000$,且 $C_a$ 和 $C_b$ 互质。
输出格式
输出共为 $T$ 行,第一个数字为要达成的完成次数 $a_i$(题目保证存在解)。
接下来 $a_i$ 个数字,表示各种操作:
- 1 操作:`fill A` 意为给 $A$ 灌满水
- 2 操作:`fill B`
- 3 操作:`empty A` 意为将 $A$ 中水倒空
- 4 操作:`empty B`
- 5 操作:`pour B A` 意为将 $B$ 中水倒到 $A$ 中(直到 $A$ 满或者 $B$ 中水没有剩余)
- 6 操作:`pour A B`
输入输出样例
输入样例 #1
2
3 5 4
5 7 3
输出样例 #1
6 2 5 3 5 2 5
6 1 6 1 6 4 6
输入样例 #2
1
26 29 11
输出样例 #2
22 1 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6
说明
开启了 spj。
如果你的方案比答案优,会提示 UKE,此时请联系管理员修改数据。
如果你的方案比答案差,分数会相应减损。