一个有趣的问题

百度知道上看到这么一个问题(http://zhidao.baidu.com/question/362803942.html&__bd_tkn__=73a74a293e25982b49578d3fba8a28be88039ea68078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157b5aff3a9d64a0fc5c0f03de0125277ba143be7d4a7793757e2ec2fca04c437b0720312ab91509454ec1a4ad9e798faccbdc8c0bca3520f54dab):

有1000桶酒,其中有一桶酒有毒,老鼠喝了酒之后会在一个星期之后开始发作,现在问你,最少要用多少只老鼠才能在一周之后找到那只老鼠?

答案一:

每桶酒给只老鼠,一周之后看哪只老鼠会发作,就是那个桶的酒有毒了。

 

这大概就是一般人的答案了,但如果这就是答案,百度也就不会出这个笔试题了(这个好像是百度的笔试题)

 

这个问题的关键是,怎么用老鼠来标记不同的酒。答案一给出的是每个桶用一只老鼠来标记一个桶。这样是不是太浪费老鼠了?能不能把每只老鼠都利用起来呢?

答案二:

老鼠按顺序排好,每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒。 1000转换成二进制是:1111101000, 共有十位,所以需要的老鼠个数为10个。

这是一个网友(huanggf04)回答的。

我解释一下,老鼠有两种状态,一种就是喝了这桶酒里面的酒,这样老鼠一周后就会发作(1),一种就是没有喝这桶酒里面的酒,老鼠一周后就不会发作(0)。那我们现在将每桶酒用二进制排一个序(00 0000 0000-11 1110 1000),所以现在每桶酒都有一个唯一的二进制编号,二进制位总共有10位。现在弄10只老鼠过来,排成一个10位的二进制位。然后给每桶酒二进制对应位上为1的位置的老鼠喝这个桶里的酒。一周后,看哪些位上的老鼠发作了,把发作了的位标记为1,没有发作的标记为0,得到的十进制对应的酒就是有毒的了。

 

答案三:

狗屁不通。 若老鼠中毒只有两种状态:死 / 活, 则需要10只, 若有三种状态: 死,半死不活,活,则需要7只,。。。。。若有1000种状态,则需1只。

这是另一个网友的原话(SEG总部)

经典啊!

 

这个问题中,其实就是把老鼠当作一个进制中的某个位,再看老鼠总共会有几种状态,只有两种状态就把酒桶用2进制编码(10只),3种就用三进制(7只),1000种就用一千进制(1只)!

你可能感兴趣的:(一个有趣的问题)