第五题:牛奶桶倾倒问题
题目描述
给定三个牛奶桶 A、B、C,容积分别为 v、x、y。初始状态下,三个桶中的牛奶量为 (v, 0, 0)。可在任意两个桶之间进行 “倾倒操作”,规则如下:
-
若源桶 S 中的牛奶量 ≥ 目标桶 D 剩余的容量,则将 D 倒满,S 中剩下多余的牛奶。 -
若源桶 S 中的牛奶量 < 目标桶 D 剩余的容量,则将 S 中的牛奶全部倒入 D。
注意:不允许从外部补充牛奶,也不允许倒掉牛奶。需计算使 A、B、C 中任意一个桶的牛奶量恰为 v/2 所需的最少倾倒操作次数;若无法达成,输出 -1。
输入格式
输入一行,包含三个正整数 v、x、y,分别代表三个桶的容积。
输出格式
输出一个整数:若能达成目标,输出最少操作次数;否则输出 -1。
输入输出样例
|
|
---|---|
|
|
样例解释
初始状态 (8, 0, 0),目标是使任意桶牛奶量为 4(8/2),最少步骤如下:
-
(8,0,0) → A 倒向 B → (3,5,0) -
(3,5,0) → B 倒向 C → (3,2,3) -
(3,2,3) → C 倒向 A → (6,2,0) -
(6,2,0) → B 倒向 C → (6,0,2) -
(6,0,2) → A 倒向 B → (1,5,2) -
(1,5,2) → B 倒向 C → (1,4,3)(B 桶达 4,结束)
数据范围
对于 100% 的数据,满足 1 ≤ v、x、y ≤ 200。