puzzles - zero91's Blog

智力趣题--逻辑推理(1)

1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?

二进制

2、请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。

有点脑筋急转弯的味道。把切成的8份蛋糕先拿出7份分给7人,剩下的1份连蛋糕盒一起分给第8个人。

3、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?

这是一道非常经典的过桥问题。网上说最优答案为19,不知道是怎么来的。个人觉得不可能,应该为29。方法如下:

小明和弟弟同时过桥,3秒

小明回来,1秒

小明妈妈和爷爷同时过桥,12秒

小明弟弟回来,3秒

小明和他爸同时过桥,6秒

小明回来,1秒

小明和弟弟同时过桥,3秒。把以上加起来,即为29秒。此题具有通用的解法,具体思路如下:

设 人数为n,不妨设n>=4,因为n=1,2,3很容易知道。在这里我们采用贪心的策略,因为最慢的那个人是一定要过河的,且他的过河时间不可能减 少,每次过完河之后一定要有一个人回来,这就代表一定会有一个人一来一回,即等于没有过河,很容易想到应该选择速度较快的人去做。设n个人中最快的两个人 为A、B,最慢的两个人为C、D(过河时间A<B<C<D),有两种过河方案:

(1)AB过河,A回,CD过河,B回,耗时A+2B+D

(2)AD过河,A回,AC过河,A回,耗时2A+C+D

在以上两种方案中选择花费时间较小的就可以了,POJ上面有这个题目:http://poj.org/problem?id=1700,看懂的朋友可以去练练手,代码非常简单。

4、 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别人头 上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。 一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑 帽子?

假如只有一个人戴黑帽子,那他看到所有人都戴白帽,在第一次关灯时就应自打耳光,所以应该不止一个人戴黑帽子;如果有两顶黑帽子,第一次两人都只看到对方头上的黑帽子,不敢确定自己的颜色,但到第二次关灯,这两人应该明白
,如果自己戴着白帽,那对方早在上一次就应打耳光了,因此自己戴的也是黑帽子,于是也会有耳光声响起;可事实是第三次才响起了耳光声,说明全场不止两顶黑帽,依此类推,应该是关了几次灯,有几顶黑帽。

 

5、一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯 从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?

以 前在算法导论上看过这一题,是讲聘最优的面试者的,跟这一题几乎一模一样。具体可以这样操作:先选择一个层数如5,在第一层到第五层之间的所有钻石,不过 有多大,都不拿,记下他们最大的那颗,然后从第六层开始,一旦碰到钻石接近于或者大于记录下来的那个钻石,就拿走,不再管其他的层。这个去做,有一个极端 的情况就是,后面六层没有哪一层的钻石满足前面的条件,这样就只好去拿走最后一层的钻石了。

 

6、烧一根不均匀的绳要用一个小时,如何用它来判断半个小时 ?

两边同时烧就可以了。

 

7、有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐 分成50、90克各一份?

(1)140 = 70 + 70(分成两个70克)

(2)用7克、2克两个砝码取出9克盐,分成了三份,分别是:70、61、9

(3)左边放61克盐,放2克的砝码和9克盐和50克盐(注意9克盐是上次分出来的,50克盐是这次称出来的,两者不混合就可)。

 

      8、你有四人装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被 污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?

           第一个罐子去一粒药丸,第二个去两粒,第三个取三粒,第四个取四粒,称一下总重量就可以了。

 

  9、如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出 4夸脱的水?

       用3夸脱的提桶装满水倒入5夸脱的提桶,在用3夸脱的提桶装满水倒入刚才的那个5夸脱的提桶,直到5夸脱的提桶满了,这样3夸脱的提桶还剩下1夸脱的水, 倒掉5夸脱提桶中的水,把3夸脱中的1夸脱水倒入到5夸脱的提桶中,在用3夸脱的提桶装满水,倒入刚才的那个5夸脱的提桶中就可以了。

      10、你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛选出同样颜色 的两个,抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?

       鸽巢原理,4个

 

      11、假设时钟到了12点。注意时针和分针重叠在一起。在一天之中,时针和分针共重叠多少次?你知道它们重叠时的具体时间吗?

       应该很多人小学的时候就看过这个题目。23次,记x为从0点开始所经历的分钟数,则有等式x%60=x/12(0 <= x < 60 * 12)。求出半天所有解。为什么是23次,应该11点那次的重合与12点的那次重合是同时的,只能算是一次。

 

      11、中间只隔一个数字的两个素数被称为素数对,比如17和19。证明素数对之 间的数字总能被6整除(假设这两个素数都大于6)。

      大于6的之间的素数对之间的元素肯定是偶数,而相邻的三个数中一定有一个数能够整除3,只能是素数对之间的那个数。

 

      12、一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这 3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。

       现在门外打开一个开关,等一会儿,然后关掉它,再另外一个开关,在走到屋内,热而不亮的一个灯泡是第一个开关所控制,亮的便是第二个,剩下的一个就是第三个开关所控制的。

 

      13、假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?

       很多人第一反应估计是二分吧。这样需要称三次。其实,我们有另外一种方法,称两次就可以了。假设8个球的编号分别是1、2、3……8,把球分成三份,分别 是123、456、78,比较123和456的重量,相等则说明在要找的球在78两个球中,再比较78两个球就可以了。如果有一边较重,则说明要找的球在 较重的那一边,不妨设为123这边比较重,则再比较12两个球的重量,若相等,则3球为较重的球,否则,较重的那个球就是我们要找的那个球。

 

      14、4,4,10,10,加减乘除,怎么出24点?

      (10*10-4)/4

 

     15、1000!有几位数,为什么?

      用Stirling逼近公式。

 

      16、已知两个1~30之间的数字,甲知道两数之和,乙知道两数之积。
  甲问乙:"你知道是哪两个数吗?"乙说:"不知道";
  乙问甲:"你知道是哪两个数吗?"甲说:"也不知道";
  于是,乙说:"那我知道了";
  随后甲也说:"那我也知道了";
  这两个数是什么?

      这一题不是我想出来的,以下是网上的一个答案:

      允许两数重复的情况下
  答案为x=1,y=4;甲知道和A=x+y=5,乙知道积B=x*y=4
  不允许两数重复的情况下有两种答案
  答案1:为x=1,y=6;甲知道和A=x+y=7,乙知道积B=x*y=6
  答案2:为x=1,y=8;甲知道和A=x+y=9,乙知道积B=x*y=8
  解:
  设这两个数为x,y.
  甲知道两数之和 A=x+y;
  乙知道两数之积 B=x*y;
  该题分两种情况 :
  允许重复, 有(1 <= x <= y <= 30);
  不允许重复,有(1 <= x < y <= 30);
  当不允许重复,即(1 <= x < y <= 30);
  1)由题设条件:乙不知道答案
  <=> B=x*y 解不唯一
  => B=x*y 为非质数
  又∵ x ≠ y
  ∴ B ≠ k*k (其中k∈N)
  结论(推论1):
  B=x*y 非质数且 B ≠ k*k (其中k∈N)
  即:B ∈(6,8,10,12,14,15,18,20...)
  证明过程略。
  2)由题设条件:甲不知道答案
  <=> A=x+y 解不唯一
  => A >= 5;
  分两种情况:
  A=5,A=6时x,y有双解
  A>=7 时x,y有三重及三重以上解
  假设 A=x+y=5
  则有双解
  x1=1,y1=4;
  x2=2,y2=3
  代入公式B=x*y:
  B1=x1*y1=1*4=4;(不满足推论1,舍去)
  B2=x2*y2=2*3=6;
  得到唯一解x=2,y=3即甲知道答案。
  与题设条件:"甲不知道答案"相矛盾,
  故假设不成立,A=x+y≠5
  假设 A=x+y=6
  则有双解。
  x1=1,y1=5;
  x2=2,y2=4
  代入公式B=x*y:
  B1=x1*y1=1*5=5;(不满足推论1,舍去)
  B2=x2*y2=2*4=8;
  得到唯一解x=2,y=4
  即甲知道答案
  与题设条件:"甲不知道答案"相矛盾
  故假设不成立,A=x+y≠6
  当A>=7时
  ∵ x,y的解至少存在两种满足推论1的解
  B1=x1*y1=2*(A-2)
  B2=x2*y2=3*(A-3)
  ∴ 符合条件
  结论(推论2):A >= 7
  3)由题设条件:乙说"那我知道了"
  =>乙通过已知条件B=x*y及推论(1)(2)可以得出唯一解
  即:
  A=x+y, A >= 7
  B=x*y, B ∈(6,8,10,12,14,15,16,18,20...)
  1 <= x < y <= 30
  x,y存在唯一解
  当 B=6 时:有两组解
  x1=1,y1=6
  x2=2,y2=3 (∵ x2+y2=2+3=5 < 7∴不合题意,舍去)
  得到唯一解 x=1,y=6
  当 B=8 时:有两组解
  x1=1,y1=8
  x2=2,y2=4 (∵ x2+y2=2+4=6 < 7∴不合题意,舍去)
  得到唯一解 x=1,y=8
  当 B>8 时:容易证明均为多重解
  结论:
  当B=6时有唯一解 x=1,y=6当B=8时有唯一解 x=1,y=8
  4)由题设条件:甲说"那我也知道了"
  => 甲通过已知条件A=x+y及推论(3)可以得出唯一解
  综上所述,原题所求有两组解:
  x1=1,y1=6
  x2=1,y2=8
  当x<=y时,有(1 <= x <= y <= 30);
  同理可得唯一解 x=1,y=4




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee