逻辑题收集

 

近来逛论坛作逻辑题,下面是是自己一下子没想到的题目(答案已设为白色字体):

 

1.生产中需要一段铁链,库房中只有五截每截只有三个铁环的铁链,这五截铁链连起来的长度正好是所需要的。 

   问:在只切断三个铁环的情况下,怎样将这五截三铁环连起来? 

   答:把一截的三个都切了。

22.有一老头卖了6角钱的瓜给3个人,每个人花了2角,后来老头又想要5角,就叫孙子去还给他们1角,路上孙子口渴就花了4分买水喝,然后把余下的6分还给每人2分,现在他们每人花1.8角一共是5.4角加上孙子花的4分一共是5.8角.问少的那2分钱哪去了? 

答:每人花了不是2角,应是5/3角,5/3角加上2分再乘以3是3个人花的总钱数一共是5角6分,加上4分水钱,6角没错,差点被迷晕了。

3.1到100共一百个自然数,放入一个99个元素的数组,要求用java语言编写一个简单的程序,找出没有被放入数组的这个数? 

答:将数组所有数字和相加为a,然后用1加到100 减去这个a 则多出来的就是缺失的那个数;当然也可以先排下序再判断。

4.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一滴带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

答:小白鼠死活是个开关。 2^10=1024,长度10的二进制数可以表示0-1000范围。

换个角度解释下具体操作:  

a. 给瓶编号,分别为0到999,一共1000瓶 

b. 选择10个小白鼠,编号,分别为0到9,一共10只 

c. 讲所有瓶号N分解为如下表达: 
N= X0 * 1 + X1 * 2 + X2 * 4 + X3 * 8 + ...... + X9 * 512 
(0<= N <=999, Xi为0或者1) 

c. 对第K瓶,如果其二进制分解表达式中Xi = 1 (0 <= i <= 9), 则让第i只小白鼠喝第K瓶一口 
(如第3瓶 3 = 1 * 1 + 1 * 2, 则让编号为0的小白鼠和编号为1的小白鼠分别喝一口第3瓶药水 

e. 24小时候,检查小白鼠死亡情况,死亡表示1,活着表示0 
则有毒药水编号为 X0 * 1 + X1 * 2 + X2 * 4 + X3 * 8 + ...... + X9 * 512 


 

posted @ 2010-07-19 19:39  瓦尔登湖  阅读(470)  评论(0编辑  收藏  举报