智力题:用32只白鼠找出1000瓶药里的一瓶假药

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:18:30
1000管药水,其中有一管假的
现在有32只小白鼠,假药的致死时间至少3天(可以理解为每只鼠可以喝很多管)
问如何辨别出哪管药水是假的? 喂药时间限制不能超过3天。

10只老鼠就够了。

把1000瓶药按顺序排列,并把他们的10进制编号换算成二进制编号

然后,根据10只耗子在2进制中的位数,让他们同时喝他们对应编号的药

10进制 2进制 哪只耗子喝
1 : 1 ---- 1号耗子喝
2 : 10 ---- 2号耗子喝
3 : 11 ---- 1和2号耗子同时喝
4 : 100 ---- 3号耗子喝
。。。。。
512 :1000000000 ---- 编号10的耗子喝
1000:1111101000 ---- 编号6-编号10还有编号4的耗子都喝

3天以后可以看出哪些耗子死亡(二进制代码的唯一性),根据他们对应的2进制编号就可以找到哪一管有毒了。

这类题已经有固定的解法,参加过数学竞赛的应该都比较熟悉了。

把药分成32组 每组最多32瓶 给每组编号
32只白鼠分别喝掉32个组的所有瓶药

3天后有一只白鼠死了 则有毒的就在这个白鼠喝的那个组瓶中

再让剩余的31只白鼠喝分别喝这组中的1瓶药

这样就可以找到了

呵呵,不错,就是这,电脑知识了
把1000瓶药按顺序排列,并把他们的10进制编号换算成二进制编号

然后,根据10只耗子在2进制中的位数,让他们同时喝他们对应编号的药

10进制 2进制 哪只耗子喝
1 : 1 ---- 1号耗子喝
2 : 10 ---- 2号耗子喝
3 : 11 ---- 1和2号耗子同时喝
4 : 100 ---- 3号耗子喝
。。。。。
512 :1000000000 ---- 编号10的耗子喝
1000:1111101000 ---- 编号6-编号10还有编号4的耗子都喝

3天以后可以看出哪些耗子死亡(二进制代码的唯一性),根据他们对应的2进制编号就可以找到哪一管有毒了。

10只老鼠就够了。