智力题,也可以称为逻辑题,是一种在面试的时候可能会被面试官问到的题目。
因此,我们有足够的理由,花费一定的时间在这类题目上面,以此来提高我们的逻辑思维能力。
(该系列会持续更新哦!)
今天,我们先来探讨一个经典的题目——小白鼠喝毒药。
问题如下:
有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。
小白鼠喝下毒药后都会在一星期之后死亡。
现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?
分析:
既然是智力题,就不能用普通的思维来思考,我们需要另辟蹊径。
方法一:
因为其中有一瓶是毒药,那么理论上来讲,这瓶毒药完全有可能会把小白鼠的肉给腐蚀掉。
那么我们就可以这样做:我们先把这10只小白鼠剁成肉馅,
(这样做貌似很残忍啊)
(;´д`)ゞ
然后分别把肉馅放到这1000个瓶子当中,等待一个星期,看哪个瓶子的肉变质了,那么就可以确定哪一瓶就为毒药。
当然,这并不是一个好方法,而且如果你在面试的时候这样回答,会让面试官哭笑不得的
┑( ̄Д  ̄)┍
方法二:
既然是智力题,那么我们可以转换思维,用二进制的方法来思考。
我们知道,2^10=1024,而恰好1000<1024,
那么我们就可以用二进制序列来表示每一个瓶子。
而我们也可以给每一位小白鼠编号。
这样每1位小白鼠就对应了1个二进制位,总共可以表示10个二进制位。
我们让小白鼠从1到10分别对应从右往左的10个二进制位,并且让每一位小白鼠喝掉其对应二进制位上为1的瓶子的水(或者毒药)。
(喝掉对应二进制位上为0的水或者毒药同理)
那么,一个星期后,我们观察有那些小白鼠死亡,就可以确定该小白鼠对应二进制位上为1的瓶子装有毒药。
举例:
例如,编号为1、3、4、7、8的小老鼠死去,则说明装有毒药的那个瓶子的编号在第1、3、4、7、8的二进制位上位1,其余位为0
因为,假如其余位不为0,而为1的话,对应该二进制位的小白鼠也会死亡
所以我们可以确定,装有毒药的瓶子的编号为:0 011 001 101,转换为十进制就是205。
至此,我们就把这个问题解决啦!
如果各位同学还有其他更好的解法,欢迎在评论区讨论哦!
创作不易,希望大家可以点赞、评论、转发、关注一条龙哦!
你们的支持是我创作最大的动力!!