wkiwi的博客

程序员面试逻辑题(下)

发布时间:2年前热度: 248 ℃评论数:

【61】你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?

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

【63】对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。

【64】想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下? 

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

【66】两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢? 

【67】 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水? 

【68】有3顶红帽子,4顶黑帽子,5顶白帽子。让10个人从矮到高站成一队,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面9个人头上帽子的颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。假设最前面那个人一定会知道自己戴的是黑帽子。为什么?

【69】假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?

【70】卢姆教授说:“有一次我目击了两只山羊的一场殊死决斗,结果引出了一个有趣的数学问题。我的一位邻居有一只山羊,重54磅,它已有好几个季度在附近山区称王称霸。后来某个好事之徒引进了一只新的山羊,比它还要重出3磅。开始时,它们相安无事,彼此和谐相处。可是有一天,较轻的那只山羊站在陡峭的山路顶上,向它的竞争对手猛扑过去,那对手站在土丘上迎接挑战,而挑战者显然拥有居高临下的优势。不幸的是,由于猛烈碰撞,两只山羊都一命呜呼了。

现在要讲一讲本题的奇妙之处。对饲养山羊颇有研究,还写过书的乔治.阿伯克龙比说道:“通过反复实验,我发现,动量相当于一个自20英尺高处坠落下来的30磅重物的一次撞击,正好可以打碎山羊的脑壳,致它死命。”如果他说得不错,那么这两只山羊至少要有多大的逼近速度,才能相互撞破脑壳?你能算出来吗?

【71】据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗?

【72】已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)

【73】在9个点上画10条直线,要求每条直线上至少有三个点?


【74】一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?

【75】在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

答案:


【61】


一个罐子放一个红球,另一个罐子放49个红球和50个蓝球,概率接近75%


【62】


1号罐取一个药片, 2号罐取两个药片,3号罐取3个药片, 4号罐取4个药片.


称量总重量, 比正常重量重几, 就是几号罐子被污染了.


【63】


1 4 9


【64】


因为镜子和你平行.


如果镜子与人不平行, 就可以颠倒上下.


实际上镜子并没有颠倒左右,而是颠倒前后


【65】


1,若是两个人,设A、B是黑帽子,第二次关灯就会有人打耳光。原因是A看到B第一次没打耳光,就知道B也一定看到了有带黑帽子的人,可A除了知道B带黑帽子外,其他人都是白帽子,就可推出他自己是带黑帽子的人!同理B也是这么想的,这样第二次熄灯会有两个耳光的声音。


2,如果是三个人,A,B,C. A第一次没打耳光,因为他看到B,C都是带黑帽子的;而且假设自己带的是白帽子,这样只有BC戴的是黑帽子;按照只有两个人带黑帽子的推论,第二次应该有人打耳光;可第二次却没有。。。于是他知道B和C一定看到了除BC之外的其他人带了黑帽子,于是他知道BC看到的那个人一定是他,所以第三次有三个人打了自己一个耳光!


【66】


把大圆剪断拉直。小圆绕大圆圆周一周,就变成从直线的一头滚至另一头。因为直线长就是大圆的周长,是小圆周长的2倍,所以小圆要滚动2圈。


但是现在小圆不是沿直线而是沿大圆滚动,小圆因此还同时作自转,当小圆沿大圆滚动1周回到原出发点时,小圆同时自转1周。当小圆在大圆内部滚动时自转的方向与滚动的转向相反,所以小圆自身转了1周。当小圆在大圆外部滚动时自转的方向与滚动的转向相同,所以小圆自身转了3周。


这一题非常有迷惑性,小圆在外部时其实是3圈,你可以拿个硬币试试可以把圆看成一根绳子,长绳是短绳的2倍长,假设长绳开始接口在最底下,短绳接口在长绳接口处,然后短绳开始顺时针绕,当短绳接口对着正左时,这时其实才绕了长绳的1/4,转了180 90度,所以绕一圈是270*4=360*3 。同理小圆在内部时是1圈。也可以套用下列公式: 两圆圆心距/转动者半径=转动者切另一圆时的自转数!!


【67】


40瓶,20 10 5 2 1 1=39, 这时还有一个空瓶子,先向店主借一个空瓶,换来一瓶汽水喝完后把空瓶还给店主。


【68】


一共3红4黑5白,第十个人不知道的话,可推出前9个人的所有可能情况:


红 黑 白


3 3 3


3 2 4


3 1 5


2 3 4


2 2 5


1 3 5


如果第九个人不知道的话,可推出前8个人的所有可能情况:


红 黑 白


1 2 5


1 3 4


2 1 5


2 2 4


2 3 3


3 1 4


3 2 3


由此类推可知,当推倒第六个人时,会发现他已经肯定知道他自己戴的是什么颜色的帽子了.


“有3顶黑帽子,2顶白帽子。让三个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面两个人头上帽子的颜色,中间那个人看得见前面那个人的帽子颜色但看不见在他后面那个人的帽子颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。事实上他们三个戴的都是黑帽子,那么最前面那个人一定会知道自己戴的是黑帽子。为什么?”


答案是,最前面的那个人听见后面两个人都说了“不知道”,他假设自己戴的是白帽子,于是中间那个人就看见他戴的白帽子。那么中间那个人会作如下推理:“假设我戴了白帽子,那么最后那个人就会看见前面两顶白帽子,但总共只有两顶白帽子,他就应该明白他自己戴的是黑帽子,现在他说不知道,就说明我戴了白帽子这个假定是错的,所以我戴了黑帽子。”问题是中间那人也说不知道,所以最前面那个人知道自己戴白帽子的假定是错的,所以他推断出自己戴了黑帽子。


我们把这个问题推广成如下的形式:


“有若干种颜色的帽子,每种若干顶。假设有若干个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,而且每个人都看得见在他前面所有人头上帽子的颜色,却看不见在他后面任何人头上帽子的颜色。现在从最后那个人开始,


问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。一直往前问,那么一定有一个人知道自己所戴的帽子颜色。”


当然要假设一些条件:


1)首先,帽子的总数一定要大于人数,否则帽子都不够戴。


2)“有若干种颜色的帽子,每种若干顶,有若干人”这个信息是队列中所有人都事先知道的,而且所有人都知道所有人都知道此事,所有人都知道所有人都知道所有人都知道此事,等等等等。但在这个条件中的“若干”不一定非要具体一一给出数字来。


这个信息具体地可以是象上面经典的形式,列举出每种颜色帽子的数目“有3顶黑帽子,2顶白帽子,3个人”,也可以是“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”,甚至连具体人数也可以不知道,“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,这时候那个排在最后的人并不知道自己排在最后——直到开始问他时发现在他回答前没有别人被问到,他才知道他在最后。在这个帖子接下去的部分当我出题的时候我将只写出“有若干种颜色的帽子,每种若干顶,有若干人”这个预设条件,因为这部分确定了,题目也就确定了。


3)剩下的没有戴在大家头上的帽子当然都被藏起来了,队伍里的人谁都不知道都剩下些什么帽子。


4)所有人都不是色盲,不但不是,而且只要两种颜色不同,他们就能分别出来。当然他们的视力也很好,能看到前方任意远的地方。他们极其聪明,逻辑推理是极好的。总而言之,只要理论上根据逻辑推导得出来,他们就一定推导得出来。相反地如果他们推不出自己头上帽子的颜色,任何人都不会试图去猜或者作弊偷看——不知为不知。


5)后面的人不能和前面的人说悄悄话或者打暗号。


当然,不是所有的预设条件都能给出一个合理的题目。比如有99顶黑帽子,99顶白帽子,2个人,无论怎么戴,都不可能有人知道自己头上帽子的颜色。另外,只要不是只有一种颜色的帽子,在只由一个人组成的队伍里,这个人也是不可能说出自己帽子的颜色的。


但是下面这几题是合理的题目:


1)3顶红帽子,4顶黑帽子,5顶白帽子,10个人。


2)3顶红帽子,4顶黑帽子,5顶白帽子,8个人。


3)n顶黑帽子,n-1顶白帽子,n个人(n>0)。


4)1顶颜色1的帽子,2顶颜色2的帽子,……,99顶颜色99的帽子,100顶颜色100的帽子,共5000个人。


5)有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人。


6)有不知多少人(至少两人)排成一排,有黑白两种帽子,每种帽子的数目都比人数少1。


大家可以先不看我下面的分析,试着做做这几题。


如果按照上面3顶黑帽2顶白帽时的推理方法去做,那么10个人就可以把我们累死,别说5000个人了。但是3)中的n是个抽象的数,考虑一下怎么解决这个问题,对解决一般的问题大有好处。


假设现在n个人都已经戴好了帽子,问排在最后的那一个人他头上的帽子是什么颜色,什么时候他会回答“知道”?很显然,只有在他看见前面n-1个人都戴着白帽时才可能,因为这时所有的n-1顶白帽都已用光,在他自己的脑袋上只能顶着黑帽子,只要前面有一顶黑帽子,那么他就无法排除自己头上是黑帽子的可能——即使他看见前面所有人都是黑帽,他还是有可能戴着第n顶黑帽。


现在假设最后那个人的回答是“不知道”,那么轮到问倒数第二人。根据最后面那位的回答,他能推断出什么呢?如果他看见的都是白帽,那么他立刻可以推断出自己戴的是黑帽——要是他也戴着白帽,那么最后那人应该看见一片白帽,问到他时他就该回答“知道”了。但是如果倒数第二人看见前面至少有一顶黑帽,他就无法作出判断——他有可能戴着白帽,但是他前面的那些黑帽使得最后那人无法回答“知道”;他自然也有可能戴着黑帽。


这样的推理可以继续下去,但是我们已经看出了苗头。最后那个人可以回答“知道”当且仅当他看见的全是白帽,所以他回答“不知道”当且仅当他至少看见了一顶黑帽。这就是所有帽子颜色问题的关键!


如果最后一个人回答“不知道”,那么他至少看见了一顶黑帽,所以如果倒数第二人看见的都是白帽,那么最后那个人看见的至少一顶黑帽在哪里呢?不会在别处,只能在倒数第二人自己的头上。这样的推理继续下去,对于队列中的每一个人来说就成了:


“在我后面的所有人都看见了至少一顶黑帽,否则的话他们就会按照相同的判断断定自己戴的是黑帽,所以如果我看见前面的人戴的全是白帽的话,我头上一定戴着我身后那个人看见的那顶黑帽。”


我们知道最前面的那个人什么帽子都看不见,就不用说看见黑帽了,所以如果他身后的所有人都回答说“不知道”,那么按照上面的推理,他可以确定自己戴的是黑帽,因为他身后的人必定看见了一顶黑帽——只能是第一个人他自己头上的那顶。事实上很明显,第一个说出自己头上是什么颜色帽子的那个人,就是从队首数起的第一个戴黑帽子的人,也就是那个从队尾数起第一个看见前面所有人都戴白帽子的人。


这样的推理也许让人觉得有点循环论证的味道,因为上面那段推理中包含了“如果别人也使用相同的推理”这样的意思,在逻辑上这样的自指式命题有点危险。但是其实这里没有循环论证,这是类似数学归纳法的推理,每个人的推理都建立在他后面那些人的推理上,而对于最后一个人来说,他的身后没有人,所以他的推理不依赖于其他人的推理就可以成立,是归纳中的第一个推理。稍微思考一下,我们就可以把上面的论证改得适合于任何多种颜色的推论:


“如果我们可以从假设断定某种颜色的帽子一定会在队列中出现,从队尾数起第一个看不见这种颜色的帽子的人就立刻可以根据和此论证相同的论证来作出判断,他戴的是这种颜色的帽子。现在所有我身后的人都回答不知道,所以我身后的人也看见了此种颜色的帽子。如果在我前面我见不到此颜色的帽子,那么一定是我戴着这种颜色的帽子。”


当然第一个人的初始推理相当简单:“队列中一定有人戴这种颜色的帽子,现在我看不见前面有人戴这颜色的帽子,那它只能是戴在我的头上了。”


对于题1)事情就变得很明显,3顶红帽子,4顶黑帽子,5顶白帽子给10个人戴,队列中每种颜色至少都该有一顶,于是从队尾数起第一个看不见某种颜色的帽子的人就能够断定他自己戴着这种颜色的帽子,通过这点我们也可以看到,最多问到从队首数起的第三人时,就应该有人回答“知道”了,因为从队首数起的第三人最多只能看见两顶帽子,所以最多看见两种颜色,如果他后面的人都回答“不知道”,那么他前面一定有两种颜色的帽子,而他头上戴的一定是他看不见的那种颜色的帽子。


题2)也一样,3顶红帽子,4顶黑帽子,5顶白帽子给8个人戴,那么队列中一定至少有一顶白帽子,因为其它颜色加起来一共才7顶,所以队列中一定会有人回答“知道”。


题4)的规模大了一点,但是道理和2)完全一样。100种颜色的5050顶帽子给5000人戴,前面99种颜色的帽子数量是1 …… 99=4950,所以队列中一定有第100种颜色的帽子(至少有50顶),所以如果自己身后的人都回答“不知道”,那么那个看不见颜色100帽子的人就可以断定自己戴着这种颜色的帽子。


至于5)、6)“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”以及“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,原理完全相同,我就不具体分析了。


最后要指出的一点是,上面我们只是论证了,如果我们可以根据各种颜色帽子的数量和队列中的人数判断出在队列中至少有一顶某种颜色的帽子,那么一定有一人可以判断出自己头上的帽子的颜色。因为如果所有身后的人都回答“不知道”的话,那个从队尾数起第一个看不见这种颜色的帽子的人就可以判断自己戴了此颜色的帽子。但是这并不是说在询问中一定是由他来回答“知道”的,因为还可能有其他的方法来判断自己头上帽子的颜色。比如说在题2)中,如果队列如下:(箭头表示队列中人脸朝的方向)


白白黑黑黑黑红红红白→


那么在队尾第一人就立刻可以回答他头上的是白帽,因为他看见了所有的3顶红帽子和4顶黑帽子,能留给他自己戴的只能是白帽子了


【69】


拿出4个, 然后按照6的倍数和另外一人分别拿球. 即


另外一人拿1个, 我拿5个


另外一人拿2个, 我拿4个


另外一人拿3个, 我拿3个


另外一人拿4个, 我拿2个


另外一人拿5个, 我拿1个.


最终100个在我手上.


首先拿4个 别人拿n个你就拿6-n个


【70】


1英尺(ft)=0.3048米(m)


1磅(lb)=0.454千克(kg)


通过实验得到撞破脑壳所需要的机械能是mgh=(30*0.454)*9.8*(20*0.3048)=813.669(J)对于两只山羊撞击瞬间来说,比较重的那只仅仅是站在原地,只有较轻的山羊具有速度,而题目中暗示我们,两只羊仅一次碰撞致死。现在我们只需要求得碰撞瞬间轻山羊的瞬时速度就可以了,根据机械能守恒定律:mgh=1/2(m1v^2)可以得出速度。m1是轻山羊的重量。


【71】


7两倒入11两, 再用7两倒入11两装满, 7两中剩余3两, 倒出11两, 将3两倒入11两, 用7两两次倒入11两装满, 7两中剩余6两, 将11两倒出, 将6两倒入, 然后用7两倒入11两, 剩余2两. 于是得到.


11,0–>4,7–>4,0–>0,4–>11,4–>8,7–>8,0–>1,7–>1,0–>0,1–>11,1–>5,7–>5,0–>0,5–>11,5–>9,7–>9,0–>2,7


【72】


需要4飞机.


假设需要三架飞机,编号为1,2,3.


三架同时起飞, 飞到1/8 圈处, 1号飞机,给2号,3号,飞机各加上1/8 圈的油, 刚好飞回基地,此时1号,2号满油,继续前飞;


飞到2/8 圈时候,2号飞机给1号飞机加油1/8圈油量,刚好飞回基地, 3号飞机满油,继续向前飞行, 到达6/8处无油;


此时重复2号和三号飞机的送油.3号飞机反方向飞行到1/6圈时, 加油1/6圈给给2号飞机, 2号飞机向前飞行X圈, 则3号飞机可向前继续送油, 1/6 –2X 圈. 此时3号刚好飞回, 2号满油.当X= 1/6-2X时候获得最大. X =1/18.


1/6 1/18= 2/ 9. 少于1/4. 所以不能完成.


类比推,当为4架时, 恰好满足条件.


【73】


排列如下所示.X代表点, O代表空格.


X O X


O X O


X X X


O X O


X O X


得到10条.


【74】


我要到你的国家去,请问怎么走?然后走向路人所指方向的相反方向.


【75】


只有两次


假设时针的角速度是ω(ω=π/6每小时),则分针的角速度为12ω,秒针的角速度为72ω。分针与时针再次重合的时间为t,则有12ωt-ωt=2π,t=12/11小时,换算成时分秒为1小时5分27.3秒,显然秒针不与时针分针重合,同样可以算出其它10次分针与时针重合时秒针都不能与它们重合。只有在正12点和0点时才会重。


证明:将时针视为静止,考察分针,秒针对它的相对速度:


12个小时作为时间单位“1”,“圈/12小时”作为速度单位,


则分针速度为11,秒针速度为719。


由于11与719互质,记12小时/(11*719)为时间单位Δ,


则分针与时针重合当且仅当 t=719kΔ k∈Z


秒针与时针重合当且仅当 t=11jΔ j∈Z


而719与11的最小公倍数为11*719,所以若t=0时三针重合,则下一次三针重合


必然在t=11*719*Δ时,即t=12点。



面试,逻辑

手机扫码访问