找毒酒

来源:互联网 发布:linux matlab 兼容 编辑:程序博客网 时间:2024/06/02 16:53

上次从家里回学校,火车上一码农问的一个问题

题目描述如下:

某产酒公司生产了一批酒,1000瓶,但是不法分子在某瓶酒里下了毒,喝了毒酒的东西将在2小时候毒发,所幸酒还没有封装,于是,管理员弄来了十只小白鼠试酒,你知道他会如何找到那瓶毒酒吗?

我当时就想啊想,最简单的方法应该就是一只老鼠尝试100瓶了,但这太耗时间,于是,我就没说出来,然后就到学校了。

现在给出我的想法:

既然只有一瓶毒酒,那我们就可以把所有的酒唯一编号,1~1000,这显然是没什么特殊含义的,我就反复的想,10,1000,10,1000。。。。。。终于,2^10=1024,而只有一瓶毒酒,那么,就出来了

老鼠编号分别1~10,把酒的编号1~1000转化成二进制,每瓶酒,让其二进制为1的那几只老鼠喝,那么,最后死的那几只老鼠为1,没死的为0组成的数字就是那瓶毒酒的编号。

好,来举个例子:

第一瓶酒:00000 00001 让第一只老鼠喝;

第二瓶酒:00000 00010 让第二只喝

……

第五十瓶:00001 10010让第二、五、六只老鼠喝

……

好了,就这样可以找到那瓶毒酒了,耗时2小时

原创粉丝点击