题目:给你10只狗,有1000个药品,要么都没毒要么只有一瓶是有毒的,请你在一天内检测出来。已知有毒的药品会散发出毒气,狗闻了会中毒毙命,并且毒气发作的时间是19~23小时。
这道题,要用二进制来解决,3的二进制表示11,8的二进制表示1000.
下面是解决方案:
给10只狗编号1,2,3,4,5,6,7,8,9,10
用10个二进制位排列,因为2的10次方等于1024,大于1000,所以一定能找到。
用0表示狗没闻,1表示狗闻了。
开始排列:
0000000001 表示对于第1个药品,编号为1的闻了,其余没闻
0000000010 表示对于第2个药品,编号为2的闻了,其余没闻
0000000011 表示对于第3个药品,编号为1、2的闻了,其余没闻
0000000100 表示对于第4个药品,编号为3的闻了,其余没闻
0000000101 表示对于第5个药品,编号为1、3的闻了,其余没闻
... ...
... ...
1111100111 表示对于第999个药品,编号为1、2、3、6、7、8、9、10的闻了,其余没闻
1111101000 表示对于第1000个药品,编号为4、6、7、8、9、10的闻了,其余没闻
最后根据哪些编号的狗死了,就可以知道第几个药品有毒了。
比如说只有编号为1和编号为3的狗死翘翘了,那么肯定是第5个药品有毒了。
如果10只狗狗都平安无事,那这堆药品都没有毒