分酒问题(摘录)
这是一个网友们经常提起的趣味数学问题,它最初是以一个小故事的形式出现的。据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒。
顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
7两 | 7 | 0 | 7 | 3 | 3 | 0 | 7 | 0 | 7 | 6 | 6 | 0 | 7 | 2 |
11两 | 0 | 7 | 7 | 11 | 0 | 3 | 3 | 10 | 10 | 11 | 0 | 6 | 6 | 11 |
当然,老板娘的方法是每次都用7两勺从酒缸里面舀酒,然后再把装满酒的11两勺中的酒倒回到酒缸中,直到7两勺子中剩下2两酒为止.我们也可以反过来,每次用11两勺从酒缸里面舀酒,然后再把装满酒的7两勺中的酒倒回到酒缸中,直到11两勺子中剩下2两酒为止.如下:
顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
7两 | 0 | 7 | 0 | 4 | 4 | 7 | 0 | 7 | 0 | 1 | 1 | 7 | 0 | 5 | 5 | 7 | 0 | 7 |
11两 | 11 | 4 | 4 | 0 | 11 | 8 | 8 | 1 | 1 | 0 | 11 | 5 | 5 | 0 | 11 | 9 | 9 | 2 |
可以看到,老板娘用7两勺舀了5次,我们用11两勺子舀了4次。实际上这个问题是一个一次不定方程问题,设可以经过舀k次得到2两酒,用老板娘的方法则有:7k=2 mod 11,k=2/7 mod 11=(2+3*11)/7 mod 11=5次,用我们的方法则有:11k=2 mod 7,4k=2 mod 7 ,2k=1 mod 7,k=1/2 mod 7=(1+7)/2 mod 7=4次。
显然这是酒量不限的情况。在1586年,意大利数学家塔尔塔利亚提出了限制酒量的类似的分酒问题:一个能装8升的酒杯装满了酒,另外还有一个5升和3升的空酒杯,问怎样才能倒出4升酒?
其中一种方法是先往5升的酒杯中倒入5升,再由5升酒杯倒入3升酒杯中3升...如下:
顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
8两 | 8 | 3 | 3 | 6 | 6 | 1 | 1 | 4 |
5两 | 0 | 5 | 2 | 2 | 0 | 5 | 4 | 4 |
3两 | 0 | 0 | 3 | 0 | 2 | 2 | 3 | 0 |
也可以先倒入3升酒杯3升酒,再倒入5升酒杯中3升...如下:
顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
8两 | 8 | 5 | 5 | 2 | 2 | 7 | 7 | 4 | 4 |
5两 | 0 | 0 | 3 | 3 | 5 | 0 | 1 | 1 | 4 |
3两 | 0 | 3 | 0 | 3 | 1 | 1 | 0 | 3 | 0 |
一般地,对于以a,b,c为容量的三个酒杯,a装满酒,b,c空着(a为偶数,a>b>c,b+c>=a/2).那么对于互素的b和c,并且满足
a>=b+c-1,则两种方法皆可达到目的。可以用不定方程表示如下:
a-bx+cy=a/2 或者 a-cx+by=a/2
分别对应于第一种和第二种方法。然而对于a=b+c-2的情况,容易看出第一种方法不再适用,会出现状态(b-1,0,c-1),这是不会倒满中等酒杯的,也不能由小容器往大容器倒c升。但是这时候第二种方法必定可以达到目的。例如a=20,b=13,c=9,就可以分出10升来。对于a<b+c-2,问题是不可解的,你可以试一试a=16,b=12,c=7看看能不能分出8升来。
分酒问题也可以用反射原理直观地来解决,这需要用一种特殊的坐标系来解决,以塔尔塔利亚的问题为例,如下图所示:
c
/
3 ____________________
// // // // // /
2 /__//__//__//__//__//
// //aa//aa// // /
1 /__//__//__//__//__//
// // // //aa// /
0 /__//__//__//__//__//
0 1 2 3 4 5 --> b
从左边的0出发,沿着绿色路线走就是相当于第一种方法,沿着红色路线走就是相当于第二种方法。最终都到达了4。需要注意的是,路线上的每一点的坐标和应该小于总的酒量,这在解决a<=b+c-2的情况时,可以清楚地看到什么样的情况能够解决,什么样的情况不能解决。比如,将塔尔塔利亚的问题中8升杯中改为只装了6升酒,那么上图中右上角红线以外的部分就应该切掉,这样一来,由绿线表示的第一种方法就不可能得到3升酒,而由红线表示的第二种方法很容易就得出了3升酒。
摘自——zhanglin7010的笔记