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

注:

为了更好理解题意,特例举简单例子说明:注意老鼠的顺序和个数

比如两只老鼠,记为a,b(a在前,b在后),对于存活或者死去,有几种情况?

四种情况:

a,b都存活,记为0,0;
a存活,b死亡,记为0,1;
a死亡,b存活,记为1,0;
a死亡,b死亡,记为1,1。

以上说明,可以通过两只老鼠表示四种情况,也即(0,0),(0,1),(1,0),(1,1)。
可以转化为,这四种情况分别为四种药水。分别编号为00,01,10,11。

这四种药水有条件的分别给两只老鼠喝下去。(01,给b喝,10,给a喝,11,给两个都喝,00,不喝)-------规律:给为1的老鼠位置喝。—利用老鼠的位置

出现四种:—利用老鼠的个数

如果都没有死亡,说明00药水有毒;
如果a存活,b死亡,说明01药水有毒;
如果a死亡,b存活,说明10药水有毒;
如果都死亡,说明11药水有毒。

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

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

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

  1. 计算阶段:

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

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

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

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值