365
发表于 2008-5-13 20:14:30 | 显示全部楼层
  通讯控制台上的电话铃响了。警官S先生拿起了话筒,可是他除了听到"咕噜咕噜"的声音之外,别的什么也没有听见。S先生把耳 朵紧紧贴在受话器上,耐心地等待着,但一直没有任何发音清晰的话语传来,后来总算听到了一阵可怕的响声,就像是老虎在发怒时发出的那种吼叫声。
  S先生背靠着办公椅,手拿话筒,笑了起来。他今年虽然才34岁,却已是一位老资格的警官了,在美国密执安州圣克莱尔海岸警察局一干就是13年。类似这样的稀奇古怪的电话他听得够多的了,什么开玩笑的,酒鬼恶作剧的和骂人的,五花八门,应有尽有。
  S先生正准备挂断电话,但是职业的敏感提醒他还是再等一等。吼声继续着,随之而来的是一阵阵痛苦、沉重的喘气声。他转过身来把话筒交给了坐在旁边办公桌前的Q中士,随即问道:“中士先生,您的看法如何?”
  Q仔细地听了一会儿之后判断说:"这个人肯定遇到了什么麻烦。"他把话筒交回给S先生,接着拿起自己的电话,向接线员喊道: "小姐,请您查一查刚才是谁打来的电话,好吗?听声音好像事情很紧急。"
  过了一会儿,接线员回话说无法找到打电话的人。S先生认为几乎可以完全肯定对方正陷于严重的困境之中。
  此时此刻,57岁的P先生正感到极度的沮丧和恐惧。这位孤身一人在家的市议员,突然中风病复发,正处在无法与家人联系、无处求援的绝望境地,他只有寄希望于警察局了。他两眼注视着送话器, 心想自己虽然说不出话来,但是如果用右手去拍打它,或许能使对方知道他所处的困境。
  “先生,您拍打送话器是想让我知道出了什么事情,是吗?”话筒里传来了警官S先生的问话。P先生喜出望外,情不自禁地再次用手 拍打送话器,想尽可能使这种奇异的"通话"方式继续下去。
  突然,话筒从他那失去控制的左手滑了下来,坠落在地板上。
  在警察局里,S先生已经清楚地从受话器里听到了对方拍打送话器的响声,以及后来话筒的坠落声。他确信打电话的人要么是心脏病 突发,要么是突然中风,总之情况相当危急。迫在眉睫的问题是必须尽快弄清楚对方的地址,以便能及时地给予救护和援助。
  P先生手脚笨拙地在地板上摸索着,想拾起话筒,但感到力不从心。可怜的市议员P先生费了九牛二虎之力,好容易才拾起话筒。他立刻用耳朵紧贴受话器,还能听见警官关切的询问声。上帝保佑,通话并未中断!
  "喂,喂,先生,请记住!"S先生指示说:“你拍一下送话筒, 表示“是”拍两下,表示 “不是”,能做到吗?”
  "啪!"P先生立即表示同意。
  "先生,很好。"S先生继续说,"我现在要弄清楚您的电话号码,可以吗?我只要知道您的电话号码,就可以知道您的住址。"
  "啪!"P先生马上作出了反应。
  这座圣克莱尔海岸城市有1135000人口,电话号码是个七位数。这意味着要弄清楚某一只电话的号码的可能性只有一千万分之一,真 可谓是"大海捞针"。
  但是,警官S先生是精通逻辑的。其实,他最多只要提24个问题,就肯定能查明对方的电话号码。
  警官S先生的第一个问题是:"您的电话号码大于500万吗?"
  "啪!"对方的反应是肯定的。 "您的电话号码大于750万吗?"
  "啪!"又传来一下拍击声。
  请你继续提22个问题 (最多22个),准确地查明市议员P先生的电话号码。

[ 本帖最后由 好吃♂懒做 于 2008-5-15 20:09 编辑 ]
478
| 发表于 2008-5-13 22:20:14 | 显示全部楼层
是对分法吧。以前做过。因为2的n次方问n次就够了。2的24次方好象是大于9999999的,所以应该够了
521
| 发表于 2008-5-13 23:45:26 | 显示全部楼层
路过。。。PS:楼上答对了。。看到24就立刻想到幂的问题=。=
365
| 楼主| 发表于 2008-5-15 20:09:12 | 显示全部楼层
参考答案:  
    要确定1000000与9999999之间的任何一个数,只需要问24次就行,这简直是难以置信。然而,只要你略微懂得一点数学中对分法 的知识,就不必怀疑它的可能性了。对分法是这样的:假如某一集合中包含有偶数个元素,就可以把它分成两个相等的部分,使每部分包含同等数量的元素,假如某一集合包含有奇数个元素,也可以把它分成两部分,使这两部分所包含的元素个数尽可能相等。然后你就可以用"是非法"的形式来提问,在得到回答后,你就可以重复上述步骤,直到确定此集合中的某一特定元素为止。
  很明显,问一次可以确定二元组中的一个元素。四元组问二次即可,八元组问三次,十六元组问四次,一般地说,问n次可以辨别出 2的n次方元组里的任何一个选定的元素。
  在这个题目里,P先生的电话号码是一个七位数,也就是说,他的电话号码是1000000与9999999之间的某一个数码。S先生知道p先生还能击响受话器来回答问题的时候,最好的办法莫过于用是非提问的形式来确定对方的电话号码,而这样的提问最多只需24次即可。 因为2的24次方=16777216,它大于七位数中最大的一个数9999999。但是只问2次却未必能达到目的,因为2的23次方=8388608。如果P先生的电话 号码比这个数大,就有可能问不出来。S先生的办法是:取1000000与9999999中间的一个数即5000000,然后问对方的电话号码是否大于5000000,这样就可以确定P先生的这个电话号码是在1000000与5000000之间,还是在5000000与9999999之间了。在得到回答后,不断重复上述步骤,问24次就可以得到要找的电话号码。
  我们不妨假设P先生的电话号码是9360702,那么,S先生的提问将是:
  1.这个数大于5000000吗? 是的
  2.这个数大于7500000吗? 是的
  3.这个数大于8750000吗? 是的
  4.这个数大于9370000吗? 不是
  5.这个数大于9060000吗? 是的
  6.这个数大于9210000吗? 是的
  7.这个数大于9290000吗? 是的
  8.这个数大于9330000吗? 是的
  9.这个数大于9350000吗? 是的
  10.这个数大于9360000吗? 是的
  11.这个数大于9365000吗? 不是
  12.这个数大于9363000吗? 不是
  13.这个数大于9361000吗? 不是
  14.这个数大于9360500吗? 是的
  15.这个数大于 9360800 吗? 不是
  16.这个数大于 9360600 吗? 是的
  17.这个数大于 9360700 吗? 是的
  18.这个数大于 9360750 吗? 不是
  19.这个数大于 9360725 吗? 不是
  20.这个数大于 9360712 吗? 不是
  21.这个数大于 9360706 吗? 不是
  22.这个数大于 9360703 吗? 不是
  23.这个数大于 9360702 吗? 不是
  24.这个数大于 9360701 吗? 是的
  由此就可以查得电话号码是 9360702。
    s先生一共只问了24个问题。
尚未登录
您需要登录后才可以回帖 登录 | 加入学院