有1000瓶正常药水和一瓶毒药,喝了药的第二天会死,问:要在第二天检测出哪个是毒药,最少需要多少只老鼠?

上面的题,(微软曾经出过),是一道关于二进制和智力的题目。

第一种思路:找1001只老鼠,可以满足上述条件(第二天检测出毒药),但是需要1001只老鼠。

第二种思路:可以考虑把多只老鼠考虑起来。具体如下:

计算阶段:
因为2^10 = 1024>10001 所以答案是10 (11太多,9太少)。

准备阶段:编号,排序并喝药水

首先把药按照二进制进行编号,0000000000- 11111001111,且10只老鼠按顺序排好,如果二进制编号为1,则给对应位置的老鼠和药水。即可。比如,第70瓶药水,70转换成二进制就是0001000110,那么就给第四、八、九只老鼠喝。

验证阶段;看老鼠死的顺序

比如, 最后死掉第三、七、八只老鼠,那么就是0010001011,转换成十进制就是139,即139桶酒有毒。

思考:为什么采用二进制? 八进制和十进制不可以么?

因为二进制只有两种结果,0,1。 刚好可以代表 活着和死亡。

猜你喜欢

转载自blog.csdn.net/weixin_41603028/article/details/115032970