测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A3010. 倒水问题

编程题 普及-

题目描述

##输入输出已更改,请不要直接提交原先的代码。
假定两个水壶$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≤Cb$,$N≤C_b≤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,此时请联系管理员修改数据。

如果你的方案比答案差,分数会相应减损。
上一题 去做题 下一题