倒水问题:
现有两个容积分别为15升和9升的容器,其中,15升的容器中已经装有11升的水。你可以做下面的操作:
(1)把一个容器灌满;
(2)将一个容器中的水全部倒空;
(3)将一个容器中的水倒入另一个容器中,直到一个容器满或另一个容器空为止。
请问,下面哪些水的容量无法通过上面的操作量出来?
(A)2升;
(B)5升;
(C)7升;
(D)14升;
(E)上面的四个都可以量出来
解答:
选C,7L
2升:将11L倒入9L容器直到满,剩下2L。
5升:将9L容器装满水,倒入15L容器,倒满时9L容器里还剩5L。
14升:在5L的基础上,把15L倒空,将5L倒入,然后再把9L容器装满,倒入15L容器,此时15L容器有水14L。
7L:怎么倒都不行。
为什么7L不行?还得先从一般的倒水问题说起。一般的倒水问题如下:
有两个容器A, B,容量分别为a和b,初始时候两个容器都是空的,问能否量出某个容量的水?
这个问题里,能倒出的水的量是a, b的最大公约数(a, b)的倍数。只要a, b互质,那么能量出所有的整数容量的水。这是因为,如果a, b互斥,那么一定存在整数x, y, 使得ax by=1(具体证明可以由辗转相除法而得)。假设在上述等式中,x>0, y<0, 那么不断地重复下列操作:
(1)装满A容器;
(2)倒入B容器直至B满;
(3)将装满的B容器的水倒空;
(4)如果A容器中有剩余的水,再倒入B
这里注意两点:B容器不装满,不倒空;A容器不空则持续往B倒水,直到A空了才装满水。
这样,将A装满x次,B倒空|y|次,则容器中剩下1升水。
对于任意的整数k, 我们有kxa kyb=k,同样重复上面的操作可以得到k升水。
但上面这个问题稍有点区别,容器开始不是空的。因此,我们存在下面的选择:
(1)将11升水先倒掉,那么就剩下两个容积分别为15L和9L的空容器,由于15和9的最大公约数是3,因此能量出的水是3的倍数;
(2)11升水不倒出,那么最后能倒出的水是11 15x 9y, 这个数不可能等于7, 这是因为,假如11 15x 9y=7, 那么15x 9y 4=0。这个等式右边能被3整除,左边不行,矛盾。可以看到:
当x=0, y=-1时,表达式的值为2L,也就是将11升水倒入9升容器,15升里剩下2升;
当x=-1,y=1时,表达式的值为5L,也就是将9升容器装满倒入15升容器,9升里剩下5升;
当x=-1, y=2时,表达式的值为14升,也就是将9升容器装满倒入15升容器,后者倒空,前者剩余5升,再将5升倒入15升,再将9升容器装满倒入15升,得14升。
基于上面的结论,能够量出的水可以是:0,2,3,5,6,8,9,11,...,
也就是可以量出3k或3k 2,但量不出3k 1。
昍爸,计算机博士,曾获初中和高中全国数学奥林匹克联赛一等奖,江苏赛区第一名,高考数学满分。现为大学计算机专业教授,平时注重提升孩子的数学和计算思维。此公众号将伴随昍昍的成长,分享寓教于乐、学以致用的数学与计算思维教育方式。