怎么「分酒」
这个游戏的起源是一道趣味数学题,其中的内容如下:有位农夫到酒行,想买两袋 5 公升 的酒。但是酒行里除了三个容积分别是 10 公升 、 7 公升 、 3 公升 的量酒杯之外,没有任何测量工具。酒行老板如何运用这 3 个量杯,倒出两个 5 公升 的酒呢?
为了方便说明, 下面先定义几个名词 :
甲:酒行里最大的量酒杯,在范例题的容量为 10 公升 。
乙:酒行里第二大的量酒杯,在范例题的容量为 7 公升 。
丙:酒行里最小的量酒杯,在范例题的容量为 3 公升 。
丁:酒行老板想要倒出酒量,在范例题为 5 公升 的酒。
为了深入了解这个游戏,我们将以下列方式来深究这个游戏:
(一) 这个游戏是不是有固定的解题策略?
(二) 如何判断指定的甲、乙、丙量杯组合,是否可将甲的酒量分半?
(三) 怎样的量杯组合,可以倒出任意的指定量来?
一、固定的解题策略:
一般人第一次接触本游戏,应该不会马上动手就倒,而会做下面的考虑:
(一) 乙 = 丁或丙 = 丁时:此时仅需将甲量杯的酒,倒入乙或丙量杯,即可完成。
(二) 甲 – 乙 = 丁或甲 – 丙 = 丁时:此时仅需将甲量杯的酒,倒入乙或丙量杯,即可完成。
(三) 甲 – 乙 – 丙 = 丁时:此时仅需将甲量杯的酒,倒入乙和丙量杯,即可完成。
(四) 当丙 =1 时,不断的重复将甲量杯的酒倒入丙量杯,再将丙量杯的酒倒入乙量杯,终究可倒出丙来。
(五) 甲 + 乙 – 丙 = 丁时:此时需将甲量杯的酒,倒入丙量杯,再将丙量杯的酒倒入乙量杯,最后把乙量杯的酒,倒入甲量杯,即可完成。
(六) 甲 – 乙 + 丙 = 丁时:此时需将甲量杯的酒,倒入乙量杯,再将乙量杯的酒倒入丙量杯,最后把丙量杯的酒,倒入甲量杯,即可完成。
但是会被出来考人的题目,岂能那么简单就被解出来,以范例题来说,必须要倒来倒去达 8 个步骤,如果不实际动手倒倒看,或以笔记录推导倒酒的过程,很难推算出来。所以如果没有一个有规则的策略,很可能东倒西倒,多出许多不必要的动作,所以我们对于「任意的指定量,是否能找到一个固定的策略,只要循此规则操作,必可得到所要的结果 」有了兴趣。
以下先从范例题,来推导可能的解题策略:
( 一 ) 解法 1 :
甲
(10)
乙
(7)
丙
(3)
操作说明
(0)
10
0
0
各量杯起始的量
(1)
3
7
0
先用甲量杯的酒,把乙量杯倒满,
甲量杯余 3 公升 ,乙量杯被倒满为 7 公升 。
(2)
3
4
3
用乙量杯中的酒,把丙量杯倒满,
乙量杯余 4 公升 ,丙量杯被倒满为 3 公升 。
(3)
6
4
0
把丙量杯中的酒,倒回甲量杯,
甲量杯增为 6 公升 ,丙量杯为 0 公升 。
(4)
6
1
3
用乙量杯中的酒,把丙量杯倒满,
乙量杯余 1 公升 ,丙量杯被倒满为 3 公升 。
(5)
9
1
0
把丙量杯中的酒,倒回甲量杯,
甲量杯增为 9 公升 ,丙量杯为 0 公升 。
(6)
9
0
1
把乙量杯中余下的 1 公升 酒,倒入丙量杯,
乙量杯剩 0 公升 ,丙量杯为 1 公升 。
(7)
2
7
1
用甲量杯中的酒,把乙量杯倒满,
甲量杯余 2 公升 ,乙量杯被倒满为 7 公升 。
(8)
2
5
3
用乙量杯中的酒,把丙量杯倒满,因为丙量杯已有 1 公升 酒,所以乙量杯只用去 2 公升 ,剩下 5 公升 ,操作至此,已完成题目的要求,量出 5 公升 的酒了。
( 二 ) 解法 2 :
甲
(10)
乙
(7)
丙
(3)
操作说明
(0)
10
0
0
各量杯起始的量
(1)
7
0
3
先用甲量杯的酒,把丙量杯倒满,
甲量杯余 7 公升 ,丙量杯被倒满为 3 公升 。
(2)
7
3
0
把丙量杯中的酒,倒至乙量杯,
乙量杯增为 3 公升 ,丙量杯为 0 公升 。
(3)
4
3
3
用甲量杯的酒,把丙量杯倒满,
甲量杯余 4 公升 ,丙量杯被倒满为 3 公升 。
(4)
4
6
0
把丙量杯中的酒,倒至乙量杯,
乙量杯增为 6 公升 ,丙量杯为 0 公升 。
(5)
1
6
3
用甲量杯的酒,把丙量杯倒满,
甲量杯余 1 公升 ,丙量杯被倒满为 3 公升 。
(6)
1
7
2
把丙量杯中的酒,倒至乙量杯,
因为乙量杯已有 6 公升 ,所以只用掉 1 公升 ,此时乙量杯被倒满为 7 公升 ,丙量杯余 2 公升 。
(7)
8
0
2
把乙量杯的酒,倒至甲量杯,
甲量杯增为 8 公升 ,乙量杯为 0 公升 。
(8)
8
2
0
把丙量杯中的酒,倒至乙量杯,
乙量杯增为 2 公升 ,丙量杯为 0 公升 。
(9)
5
2
3
用甲量杯的酒,把丙量杯倒满,操作至此,
甲量杯恰余 5 公升 ,完成题目的要求,量出 5 公升 的酒了。
( 三 ) 经研究分析之后,我们发现有两种策略可完成倒酒任务:
方法 1 :以乙量杯为主:
操作 (1) :将甲量杯的酒倒入乙量杯。
操作 (2) :将乙量杯的酒倒入丙量杯。
操作 (3) :如果乙量杯中已没酒了,直接回到操作 (1) 。
如果乙量杯中还有酒,且丙量杯也已倒满酒,那就先将丙量杯的酒倒回甲量杯,然后回到操作 (2) 继续操作。
方法 2 :以丙量杯为主 ( 过程同方法 1 ,但乙、丙互易 ) :
操作 (1) :将甲量杯的酒倒入丙量杯。
操作 (2) :将丙量杯的酒倒入乙量杯。
操作 (3) :如果丙量杯中已没酒了,直接回到操作 (1) 。
如果丙量杯中还有酒,且乙量杯也已倒满酒,那就先将乙量杯的酒倒回甲量杯,然后回到操作 (2) 继续操作。
二、以不定方程式来探讨是否可将酒分成两半
在范例题中,我们发现老板要分的酒,是将甲分为两半,亦即丁为甲的一半。类似的问题,我们可以使用「不定方程式」,来了解要求这样把酒分半的问题是「有解」,抑或「无解」!
( 范例题 )
以范例题为例,我们可假设老板将酒倒进 7 公升 的量杯 x 次;酒由 7 公升 量杯倒进 3 公升 的量杯 y 次,因为最后 7 公升 量杯内装 5 公升 酒,所以 7x-3y=5 。
,
设 ,且 t 是正整数。
x=3t-1 ,
y=2(3t-1)-2+t=7t-4 。
所以 。
若取 t=1 ,
则 x=2 、 y=3 ;也就是说在倒 酒 的过程中,老板将 酒 倒进 7 公升 的量杯 2 次 ,由 7 公升 量杯倒进 3 公升 的量杯 3 次 ,就可以完成老板和农夫的需求,倒出 5 公升 的 酒 。
如果以 ( 甲 , 乙 , 丙 ) 表示容积 10 公升 、 7 公升 、 3 公升 量杯内酒的容量,则过程是 (10,0,0)→(3,7,0) →(3,4,3) →(6,4,0)→(6,1,3)→(9,1,0)→(9,0,1) →(2,7,1) →(2,5,3) →(5,5,0)
( 范例二 )
如果量杯的容积分别是 10 公升 、 7 公升 、 4 公升 , 假设老板将酒倒进 7 公升 的量杯 x 次;酒由 7 公升 量杯倒进 4 公升 的量杯 y 次, 得 7x-4y=5 。
取 ,且 t 是正整数。
则 、
若取 t=2
则 x=3 、 y=4 ;也就是说在倒 酒 的过程中,老板将 酒 倒进 7 公升 的量杯 3 次 ; 酒 由 7 公升 量杯倒进 4 公升 的量杯 4 次 ,即可完成老板和农夫的需求,倒出 5 公升 的 酒 。
(10,0,0) → (3,7,0) → (3,3,4) → (7,3,0) → (7,0,3) → (0,7,3) → (0,6,4) → (4,6,0) → (4,2,4) → (8,2,0) → (8,0,2) → (1,7,2) → (1,5,4) → (5,5,0)
( 范例三 )
如果量杯的容积分别是 10 公升 、 6 公升 、 4 公升 , 假设老板将酒倒进 6 公升 的量杯 x 次;酒由 6 公升 量杯倒进 4 公升 的量杯 y 次, 得 6x-4y=5 。
取 ,且 t 是正整数。
则 、
由上述方程式得知,因为 t 为正整数,所以得出 x,y 不是正整数,这和假设不符,表示本题无解。
另: 6x 及 4y 都是偶数,其差也必为偶数,所以不可能得到指定的酒量 5 公升 。
( 范例四 )
如果量杯的容积分别是 10 公升 、 8 公升 、 2 公升 , 假设老板将酒倒进 8 公升 的量杯 x 次;酒由 8 公升 量杯倒进 2 公升 的量杯 y 次, 得 8x-2y=5 。
取 t=4x ,且 t 是正整数。
则 、
由上述方程式得知, t 若为正整数,则 x,y 没有正整数解。
另: 8x 及 2y 都是偶数,其差也必为偶数,所以不可能得到指定的酒量 5 公升 。
结语: 当我们以不定方程式求解甲量杯的酒量是否可分半时:
1. 若 ( 乙 , 丙 )=m( 表示乙和丙的最大公因子为 m) ,且 m 是丁的因子 ,则表示不定方程式有整数解,也就是分酒问题是有解的。
例如范例一 (7,3)=1 , 1 是 5 的因子,因此分酒问题是有解的;
范例二 (7,4)=1 , 1 是 5 的因子,因此分酒问题是有解的;
2. 若 ( 乙 , 丙 )=m ,且 m 不是丁的因子 ,则表示不定方程式没有整数解,也就是分酒问题是无解的。
例如范例三 (6,4)=2 , 2 不是 5 的因子,因此分酒问题是无解的;
范例四 (8,2)=2 , 2 不是 5 的因子,因此分酒问题是无解的;
注:以上的推导过程已假设甲是偶数 ( 因为要分半 ) 及乙 > 丁,且只考虑倒出的指定量是产生在乙量杯中。如果甲不为偶数,倒出的指定量也不是甲的一半时,丁酒量可能会产生在甲量杯中,此时请自行类推。
三、怎样的量杯组合,可以倒出任意的指定量来?
由上面的推导,我们已知道有些量杯的组合不能将甲酒量分半,有些则可以。那么更进一步:「怎样的量杯组合,才可以分出任意指定量的酒」? ( 假设要求倒出的酒量必须产生在三个量杯之一,不得两杯合起来算 ) 经我们的归纳,有以下的结论:
(一) 当 ( 乙 , 丙 ) = 1 且乙 + 丙 -2 ≦甲≦ 2 ×乙 + 丙 +1 时,
可使用这三种量酒杯,调出 1 ~甲的所有量。
例如: 在 {10,5,3} 的组合中 ,
( 乙 , 丙 )=(5,3)=1 , 6 ≦乙 + 丙 -2 ≦甲 =10 ≦ 2 ×乙 + 丙 +1=14
( 10 ,0,0) → (5, 5 ,0) → (5, 2 , 3 ) → ( 8 ,2,0) → (8,0,2) → (3,5,2) → (3, 4 ,3) → ( 6 ,4,0) → (6, 1 ,3) → ( 9 ,1,0) → (9,0,1) → (4,5,1) → (4,3,3) → ( 7 ,3,0) → (7,0,3) → (2,5,3) → (5,5,0)
可调出 1 ~ 10 的所有容量来。
例如: 在 {8,5,2} 的组合中 ,
( 乙 , 丙 )=(5,2)=1 , 5 ≦乙 + 丙 -2 ≦甲 =8 ≦ 2 ×乙 + 丙 +1=13
( 8 ,0,0) → ( 3 , 5 ,0) → (3,3, 2 ) → (5,3,0) → (5, 1 ,2) → ( 7 ,1,0) → (7,0,1) → (2,5,1) → (2, 4 ,2) → (4,4,0) → (4,2,2) → ( 6 ,2,0) → (3,5,0) → (3,3,2) → (5,3,0) → (5,1,2)
可调出 1 ~ 8 的所有容量来。
例如: 在 {10,7,3} 的组合中 ,
( 乙 , 丙 )=(7,3)=1 , 8 ≦乙 + 丙 -2 ≦甲 =10 ≦ 2 ×乙 + 丙 +1=18
( 10 ,0,0) → ( 3 , 7 ,0) → (3, 4 ,3) → ( 6 ,4,0) → (6, 1 ,3) → ( 9 ,1,0) → (9,0,1) → ( 2 ,7,1) → (2, 5 ,3) → (5,5,0) → (5,2,3) → ( 8 ,2,0)
可调出 1 ~ 10 的所有容量来。
例如: 在 {8,3,2} 的组合中 ,
( 乙 , 丙 )=(3,2)=1 , 3 ≦乙 + 丙 -2 ≦甲 =8 ≦ 2 ×乙 + 丙 +1=9
( 8 ,0,0) → ( 3 , 5 ,0) → (3, 2 ,3) → ( 6 ,2,0) → (6,0,2) → ( 1 ,5,2) → (1, 4 ,3) → (4,4,0) → (4,1,3) → ( 7 ,1,0)
可调出 1 ~ 8 的所有容量来。
例如: 在 {10,3,2} 的组合中 ,
( 乙 , 丙 )=(3,2)=1 ,因为甲 =10>2 ×乙 + 丙 +1=9
( 10 ,0,0) → ( 7 , 3 ,0) → (7, 1 , 2 ) → ( 9 ,1,0) → (9,0,1) → ( 6 ,3,1) → (6,2,2) → ( 8 ,2,0) → (8,0,2) → ( 5 ,3,2)
可调出 1,2,3,5,6,7,8,9,10公升 的容量,但倒不出 4 来。
例如: 在 {8,6,5} 的组合中 ,
( 乙 , 丙 )=(6,5)=1 ,因为甲 =8< 乙 + 丙 -2=9
( 8 ,0,0) → ( 2 , 6 ,0) → (2, 1 , 5 ) → ( 7 ,1,0) → (7,0,1) → (1,6,1) → (1,2,5) → (6,2,0) → (6,0,2) → (0,6,2) → (0,3 ,5) → (5,3,0) → (5,0,3) → (0,5,3) → (0,3,5)
可调出 1,2,3,5,6,7,8公升 的容量,但倒不出 4 来。
(二) 当 ( 乙 , 丙 )=2 且甲 = 乙 + 丙 -1 或乙 + 丙 -3 时
可使用这三种量酒杯,调出 1 ~甲的所有量。
例如: 在 { 13,8,6} 的组合中,
( 乙 , 丙 )=(8,6)=2 ,甲 =13= 乙 + 丙 -1
( 13 ,0,0) → ( 5 , 8 ,0) → (5,2 ,6 ) → (11 ,2,0) → (11,0,2) → (3 ,8,2) → (3,4 ,6) → (9 ,4,0) → (9,0,4) → (1 ,8,4) → (1,6,6) → (7 ,6,0) → (7,0,6) → (0,7,6) → (6,7,0) → (6,1,6) → (12 ,1,0) → (12,0,1) → (4,8,1) → (4,3,6) → (10 ,3,0) → (10,0,3) → (2,8,3) → (2,5,6) → (8,5,0) → (8,0,5) → (0,8,5) → (0,7,6)
可调出 1 ~ 13 的所有容量来。
例如: 在 { 11,8,6} 的组合中,
( 乙 , 丙 )=(8,6)=2 ,甲 =11= 乙 + 丙 -3
( 11 ,0,0) → ( 3 , 8 ,0) → (3,2 ,6 ) → (9 ,2,0) → (9,0,2) → (1 ,8,2) → (1,4 ,6) → (7 ,4,0) → (7,0,4) → (0,7,4) → (0,5 ,6) → (6,5,0) → (6,0,5) → (0,6,5) → (0,5,6)
(0,7,4) → (4,7,0) → (4,1,6) → (10 ,1,0)
可调出 1 ~ 11 的所有容量来。
例如: 在 { 12,8,6} 的组合中,
( 乙 , 丙 )=(8,6)=2 ,甲 =12 ≠ 乙 + 丙- 1=13 或乙 + 丙- 3=11
( 12 ,0,0) → ( 4 , 8 ,0) → (4,2 ,6 ) → (10 ,2,0) → (10,0,2) → (2,8,2) → (2,4,6) → (8,4,0) → (8,0,4) → (0,8,4) → (0,6,6) → (6,6,0) → (6,0,6) → (0,6,6)
可调出偶数的量而调不出奇数的量。
例如: 在 { 9,4,2} 的组合中,
( 乙 , 丙 )=(4,2)=2 ,甲 =9 ≠ 乙 + 丙- 1=5 或乙 + 丙- 3=3
( 9 ,0,0) → ( 5 , 4 ,0) → (5,2 ,2 ) → (7 ,2,0) → (7,0,2) → (3 ,4,2) → (5,4,0)
调不出 1,6,8 的量来。
四、结语:
(一)、 这个游戏的一般出题将甲酒量分半,可以套用固定的解题策略。
(二)、 判断指定的甲、乙、丙量杯组合,是否可将甲的酒量分半出丁的方法是:判断乙丙的最大公因素是否为丁的因素,若为因素则可,反之为否。
(三)、 下面的量杯组合,可以倒出任意的指定量来,否则不行:
1、 当 ( 乙 , 丙 ) = 1 且乙 + 丙 -2 ≦甲≦ 2 ×乙 + 丙 +1 。
2、 当 ( 乙 , 丙 )=2 且甲 = 乙 + 丙 -1 或乙 + 丙 -3 。