一道微软面试题
2011-09-27 21:12
267 查看
题目:给你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只狗狗都平安无事,那这堆药品都没有毒
这道题,要用二进制来解决,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只狗狗都平安无事,那这堆药品都没有毒
相关文章推荐
- 关于一道老微软面试题的新解
- 2011.11.5 一道微软面试题
- 微软的一道面试题
- WF4.0实战(十三):解微软一道面试题
- 经典算法研究系列:三、动态规划算法解微软一道面试题[第56题]
- 五个囚犯 一道真正难倒亿人的智力题,这是微软的面试题。
- 一道微软面试题的Java解法
- 一道微软面试题
- 五个囚犯 一道真正难倒亿人的智力题,这是微软的面试题。
- 一道微软逻辑面试题
- HDU 1029 一道微软面试题
- 从微软的一道面试题谈问题解决之道
- 一道关于signed和unsigned的微软面试题
- Java认证:一道微软面试题
- 微软一道面试题
- 海盗瓜分金币--一道网上流传的微软面试题
- 对一道微软面试题的思考
- 答与微博前端教主在吃饭时讨论到的一道"微软面试题"
- 微软的一道面试题
- 一道微软的面试题:12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球