首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

觅坏药丸

2012-09-29 
找坏药丸有10瓶药丸,可以认为每一瓶的药丸有无限多颗。这其中有9瓶是好的,一瓶是坏的。坏药丸比好药丸重1g,

找坏药丸

有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就行了。


3楼Li_Shugan1昨天 16:18
因为只有坏的才会多出重量,所以H(i)=1表示坏的.
2楼justforbigshot昨天 16:17
题目存在问题吧,应该是最少几次称出来?题目还有错别字,读不通。n第二问讲得不是很明白,如果H(i)的取值集合是{1,2}怎么理解,怎么通过二进制的为判断?
1楼Li_Shugan1昨天 19:56
嗯 谢谢你,题目的错误的地方改过来了,H(i)在我这个设定上只能取{0,1},H(i)=1表示坏的,H(i) = 0表示好的。

热点排行