本文已参与「新人创作礼」活动,一起开启掘金创作之路
毒药水
有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?
tip:
- 小鼠可以多次喝药水
- 涉及对bit位的灵活运用(正确解题)
解答
先对药物进行编号1-1000
因为1000<2^10=1024,将编号转换成2进制
1000瓶全都编号完则需要10个比特位,每个比特位对应一只编号小鼠
如果是1,则对应的比特位的小鼠喝药品,为0则对应小鼠不喝药品
如下:
1 -> 00000 00001 ->1号鼠
2 -> 00000 00010 ->2号鼠
...
5 -> 00000 00101 ->3,1号鼠
...
1000->11111 01000->4、6、7、8、9、10号鼠如果一星期后是4,6,7,8,9,10号鼠死掉,则对应的1000号药物有毒
答:最少需要10只小鼠
分配金条
你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
思路
工人在拥有金条时可以找零
解答
- 把金条分成1/7,2/7,4/7长度的金条三份
- 第一天:给工人1/7
- 第二天:给工人2/7,换回1/7
- 第三天:给工人1/7
- 第四天:给工人4/7,换回1/7和2/7
- 第五天:给工人1/7
- 第六天:给工人2/7,换1/7
- 第七天:给工人1/7
- 刚好7天分配均匀
砝码称轻重
这一类的题目有很多,这里只举几个经典的:
有一个天平,九个砝码,其中一个砝码比另八个要轻一些,问至少要用天平称几次才能将轻的那个找出来? 答案:2次
十组砝码每组十个,每个砝码都是10g重,但是现在其中有一组砝码每个都只有9g重,现有一个能显示克数的秤,最少称几次能找到轻的那组? 答案:1次
有一个天平,九个砝码,一个轻一些,用天平至少几次能找到轻的?
至少2次:第一次,一边3个,哪边轻就在哪边,一样重就是剩余的3个;
第二次,一边1个,哪边轻就是哪个,一样重就是剩余的那个;
答:至少称2次.
有十组砝码每组十个,每个砝码重10g,其中一组每个只有9g,有能显示克数的秤最少几次能找到轻的那一组砝码?
将砝码分组1~10,第一组拿一个,第二组拿两个以此类推。。第十组拿十个放到秤上称出克数x,则y = 550 - x,第y组就是轻的那组