ZZ泊松分酒问题

来源:互联网 发布:node npm init 编辑:程序博客网 时间:2024/05/22 14:29

怎么「分酒」

这个游戏的起源是一道趣味数学题,其中的内容如下:有位农夫到酒行,想买两袋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=2y=3;也就是说在倒的过程中,老板将倒进7公升的量杯27公升量杯倒进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=3y=4;也就是说在倒的过程中,老板将倒进7公升的量杯37公升量杯倒进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不是正整数,这和假设不符,表示本题无解。

另:6x4y都是偶数,其差也必为偶数,所以不可能得到指定的酒量5公升

 

(范例四)

如果量杯的容积分别是10公升8公升2公升假设老板将酒倒进8公升的量杯x次;酒由8公升量杯倒进2公升的量杯y次,8x-2y=5


t=4x,且t是正整数。

由上述方程式得知,t若为正整数,则x,y没有正整数解。

另:8x2y都是偶数,其差也必为偶数,所以不可能得到指定的酒量5公升

结语:当我们以不定方程式求解甲量杯的酒量是否可分半时:

1.  (,)=m(表示乙和丙的最大公因子为m),且m是丁的因子,则表示不定方程式有整数解,也就是分酒问题是有解的。

例如范例一(7,3)=115的因子,因此分酒问题是有解的;

范例二(7,4)=115的因子,因此分酒问题是有解的;

2.  (,)=m,且m不是丁的因子,则表示不定方程式没有整数解,也就是分酒问题是无解的。

例如范例三(6,4)=22不是5的因子,因此分酒问题是无解的;

范例四(8,2)=22不是5的因子,因此分酒问题是无解的;

注:以上的推导过程已假设甲是偶数(因为要分半)及乙>丁,且只考虑倒出的指定量是产生在乙量杯中。如果甲不为偶数,倒出的指定量也不是甲的一半时,丁酒量可能会产生在甲量杯中,此时请自行类推。

三、怎样的量杯组合,可以倒出任意的指定量来?

由上面的推导,我们已知道有些量杯的组合不能将甲酒量分半,有些则可以。那么更进一步:「怎样的量杯组合,才可以分出任意指定量的酒」? (假设要求倒出的酒量必须产生在三个量杯之一,不得两杯合起来算)经我们的归纳,有以下的结论:

(一)  (,)1且乙+-2≦甲≦2×乙++1时,

可使用这三种量酒杯,调出1~甲的所有量。

例如:{10,5,3}的组合中,

(,)=(5,3)=16≦乙+-2≦甲=102×乙++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)

可调出110的所有容量来。

例如:{8,5,2}的组合中,

(,)=(5,2)=15≦乙+-2≦甲=82×乙++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)

可调出18的所有容量来。

例如:{10,7,3}的组合中,

(,)=(7,3)=18≦乙+-2≦甲=102×乙++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)

可调出110的所有容量来。

例如:{8,3,2}的组合中,

(,)=(3,2)=13≦乙+-2≦甲=82×乙++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)

可调出18的所有容量来。

例如:{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,104来。

例如:{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,84来。

(二)         (,)=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)

可调出113的所有容量来。

例如:{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)

可调出111的所有容量来。

例如:{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

 

原创粉丝点击