#P1432. 倒水问题

倒水问题

题目背景

输入输出已更改,请不要直接提交原先的代码。

题目描述

假定两个水壶 AABB,供水量不限。可以使用三种方法装水:

  • 给一个水壶装水;
  • 把一个水壶倒空;
  • 从一个水壶倒进另一个水壶。

当从一个水壶倒进另一个水壶时,如果第一个水壶倒空,或者第二个水壶装满就不能再倒了。例如,一个水壶 AA55 加仑和另一个水壶 BB66 加仑,水量是 88 加仑,则从水壶 AA 倒进水壶 BB 时,让水壶 BB 充满水而水壶 AA33 加仑水。

问题有 33 个参数:CaC_aCbC_bNN,分别表示水壶 AABB 的容量,目标水量 NN。问题的目标是,给出一系列倒水的步骤,使水壶 BB 中的水量恰好是 NN

输入格式

第一行为数据组数 TT

接下来的 TT 行,每行三个数字 CaC_aCbC_bNN,意义如题目所示。

TT 不超过 30300<CaCb0<C_a\le C_bNCb1000N\le C_b\le 1000,且 CaC_aCbC_b 互质。

输出格式

输出共为 TT 行,第一个数字为要达成的完成次数 aia_i(题目保证存在解)。

接下来 aia_i 个数字,表示各种操作:

  • 1 操作:fill A 意为给 AA 灌满水
  • 2 操作:fill B
  • 3 操作:empty A 意为将 AA 中水倒空
  • 4 操作:empty B
  • 5 操作:pour B A 意为将 BB 中水倒到 AA 中(直到 AA 满或者 BB 中水没有剩余)
  • 6 操作:pour A B
2
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 

提示

开启了 spj。

如果你的方案比答案优,会提示 UKE,此时请联系管理员修改数据。

如果你的方案比答案差,分数会相应减损。