(小白鼠喝药问题)1000瓶药水,其中有一瓶是有毒的,如何找出有毒的药水?

问题描述

有 1000 瓶药水,但是其中有一瓶是有毒的,小白鼠只要喝了任意剂量的药水,24小时内就会死掉!请问,要在24小时内找出有毒的药水,最少需要多少只小白鼠?

解答

至少需要10只。

分析

1、因为2^10=1024>1000,把1000瓶药水从1开始,从小到大按顺序编号,到1000结束,并且编号用二进制表示,10只小白鼠也从1,2,3…10按顺序编号。

2、每瓶药水二进制位上,哪一位的数为1,则给对应编号的小白鼠喝这瓶药水。例如:
00 0000 0001---------------第1瓶药水,给编号1的小白鼠喝
00 0000 1110---------------第14瓶药水,给编号2,3,4的小白鼠喝
11 1110 1000----------------第1000瓶药水,给编号4,6,7,8,9,10的小白鼠喝

3、24小时内,观察有哪些小白鼠死掉,其编号对应的二进制位设为1,没有死的小白鼠,它们的编号对应的二进制位设为0,构成一个二进制位数,该数表示的编号对应的药水就是有毒的药水。
例如:1,2,3,4号小白鼠都死了,其它小白鼠存活,则构成的二进制数是00 0000 1111,为编号15,编号15的药水有毒。

原理:只要喝过有毒的药水,小白鼠都会死亡,根据死亡的小白鼠和存活的小白鼠对应的编号,构成一个二进制数,得出结果。

注意:允许一只小白鼠喝多瓶药水。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值