曾几何时,当你做笔试的时候。是否遇到过这种问题,给你一个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水么?