
网站救助计划
1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本
2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助,网站倒闭后可联系站长领取本站pdf内容
3.若网站能存活下来,后续将会持续更新内容
这个问题不太容易想到可以先记住答案,需要老鼠的数量为log_2 1000
为了简化问题,可以先假设有只有8瓶药水,其中有一瓶有毒,根据公式需要 log_2 8=3个老鼠
先将瓶子进行编号为0-7号,用位数表示老鼠,如下图,

将4、5、6、7号药水混合到一起喂给老鼠1,将2,3,6,7号药水混合喂给老鼠2,将1、3、5、7药水混合喂给老鼠3,观察老鼠是否中毒。
中毒的老鼠标号为1,未中毒的老鼠标号为0,将三只老鼠标号组合到一起即为有毒药水的标号。
例如,第老鼠1中毒,老鼠2未中毒,老鼠3中毒。那么三只老鼠的二进制表示为101,即5号药水有毒。因为老鼠1中毒,说明4、5、6、7号药水中含有毒的药水。老鼠2未中毒,说明2、3、6、7无毒。老鼠3中毒,说明1、3、5、7中有一瓶有毒。所以有毒的为5号药水,其实和直接将二进制转化为十进制的结果是一样的。
回到正题,如果有1000瓶药水,则需要10只老鼠,因为10位二进制足以表示0-999。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版