找坏药丸

有10瓶药丸,可以认为每一瓶的药丸有无限有颗。这其中有9瓶是好的,一瓶是坏的。坏药丸比好药丸重1g,现给你一杆称,问:

1) 最多称几次可以确定那一瓶中装的是坏药丸?

2) 如果事件不知道有几瓶中装的是坏的,又要称多少次可以确定哪些瓶中装的是坏的?

 

答: 1) 1 次。 用 H(i) = 1 表示第i瓶中装的是坏药丸,H(i) = 0 表求第i瓶中装的是好药丸。从第i瓶中取出i粒药丸,则这些药丸一共重了:

          H(1) * 1 + H(2) * 2 + ... + H(10) * 10 = H(k) * k ( 1 <= k <= 10);

          因为H(i) ( 1 <= i < = 10) ,中只有一个为1,假定为k。所以上式是成立的,也就是多了H(k) * k = k克, 所以如果称出来多了多少g,那么那一瓶就是坏的。

     2) 1 次。现在从第i瓶中取出2^(i - 1)粒,则这些药丸重了:

         H(1) * 1 + H(2)  * 2 + H(3) * 2^2 + ... + H(10)) * 2^9 = G

         由于H(i)的取值集合是{0,1} ,所以H(10)H(9)...H(1)可以看成是一个2进制的数,而它的10进制值恰好为G,所以只要称一次,然后将多出来的重量值写成二进制形式,看那些位为1就行了。

转载于:https://www.cnblogs.com/li_shugan/archive/2012/09/21/2697306.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值