假定两个水壶 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 个数字,表示各种操作:
fill A 意为给 A 灌满水fill B empty A 意为将 A 中水倒空empty Bpour B A 意为将 B 中水倒到 A 中(直到 A 满或者 B 中水没有剩余)pour A B2 3 5 4 5 7 3
6 2 5 3 5 2 5 6 1 6 1 6 4 6
1 26 29 11
22 1 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6