分酒问题

分酒问题

这是一个网友们经常提起的趣味数学问题,它最初是以一个小故事的形式出现的。据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒。

 

顺序1234567891011121314
7两70733070766072
11两0771103310101106611

    当然,老板娘的方法是每次都用7两勺从酒缸里面舀酒,然后再把装满酒的11两勺中的酒倒回到酒缸中,直到7两勺子中剩下2两酒为止.我们也可以反过来,每次用11两勺从酒缸里面舀酒,然后再把装满酒的7两勺中的酒倒回到酒缸中,直到11两勺子中剩下2两酒为止.如下:

顺序123456789101112131415161718
7两070447070117055707
11两1144011881101155011992

    可以看到,老板娘用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升...如下:

顺序12345678
8两83366114
5两05220544
3两00302230

    也可以先倒入3升酒杯3升酒,再倒入5升酒杯中3升...如下:

顺序123456789
8两855227744
5两003350114
3两030311030

    一般地,对于以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升酒。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值