天天看点

有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?

在程序员面试的时候面试官有时会考我们一些计算机编程方面的智力题,这便是一道有趣的智力题,这道题考察了我们对bit位的灵活运用。

首先1000与1024相差无几,于是我们可以用10个bit位来对这1000瓶药物进行编号,也就是将第n瓶药物的编号转化为对应的二进制。

有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?

然后我们拿10个空瓶编号为(10)(9)(8)(7)(6)(5)(4)(3)(2)(1)。将二进制的第一位(最右边的为第一位)为1的瓶子每瓶取一滴药水装入编号为(1)的瓶子,将二进制的第二位为1的瓶子每瓶取一滴药水装入编号为(2)的瓶子,以此类推。

最后用10只老鼠编号为10,9,8,7,6,5,4,3,2,1喝下对应编号瓶子的药水,一个星期后检查老鼠的存活情况。

有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?

继续阅读