1000桶酒找出一桶有毒智力题附1000桶酒其中一桶有毒答案

1000桶酒找出一桶有毒智力题目:

有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠,如何检测(老鼠的使用量越少越好,注意,毒性1周后才会发作,而且一周后必须出结果,所以时间紧迫)。

>

>

>

1000桶酒其中一桶有毒答案:

正确答案是10。和二进制有关,这是C++的一道题目。(微软曾经出过这道题)

本题考查的是二进制编码问题。

因为2^10 = 1024 所以答案是10 具体是你将药从0000000000- 11111001111编号 然后让每只老鼠喝位为1 上的所有的水,然后通过比较就能知道了

10只老鼠按顺序排好,每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒

详解如下:

如对1000桶按1~1000编码,需要10位二进制数。

因此只需要取10只老鼠,每只老鼠只喝其对应位数为1的编号的酒。

即10只老鼠按以下编码:

第一只 00000 00001
第二只 00000 00010
第三只 00000 00100
第四只 00000 01000
...
第十只 10000 00000

每只老鼠只喝其编码与酒编码做位与运算非0的酒。如果毒酒的编码在某一位为1,则监控该位的老鼠必喝,结果为1.

即把10只老鼠的结果,按位填入一个10位二进制数中,其结果即为毒酒编号。

例如:编号为10001 00011的酒是毒酒。则对应的只有第一只,第二只,第六只,第十只死亡。其对应位数置1,即为10001 00011

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论审核已启用。您的评论可能需要一段时间后才能被显示。