一道微软面试题

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值