倒水问题背后的数学知识

透过问题看本质

Posted by tokenian on September 24, 2016

曾几何时,当你做笔试的时候。是否遇到过这种问题,给你一个5L和13L的杯子,倒出一L的水来.或者5L和9L.无论怎么出,似乎都只要你倒一升, 直觉上似乎很难

背后数学知识

其实这个东西就是著名的辗转相除法,求最大公约数的。因此,对于能倒出多少升水,只要算算最大公约数就ok了。而面试题总给出俩互质的数来,总要你 倒一升,因为这样倒的步数相对来说多一些

开始吐槽

不知很多公司的面试题考察什么,就拿这道题而言,这是小学的数学内容,这可以代表公司的技术水平么?为嘛不考考大学的微积分知识。另外还有心理测试, 性格测试等诸多不明所以的测试。请问,一个人的性格能被几张纸就勾勒出来么?我们不得不说,招聘是个有难度的活儿。

此题怎么解

请了解辗转相除原理。比如求a、b之最大公约数,a>b.

假定a=bq+r, r是余数,假定最大公约数为d, r = a-bq 两边去模d运算,右边显然为0,也就是说余数包含d这个因数。

所有范围继续下去 b=rq1+r2 ====>结束条件是 余数为0,所拿到的最后一个除数。

以文章开头的 5L和13L为例

13=2*5+3

5=3+2

3=2+1

2=1+1

1=1+0

最大公约数为1,互质

所以能倒出1L水。

如果给一个10L和2L的水杯,请问你能给我倒出1L水么?