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