一道微软面试题

题目:给你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只狗狗都平安无事,那这堆药品都没有毒

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值