口试逻辑题

分享一下本日看到的几道逻辑题

一群人开舞会,每人头上都戴着一顶帽子。帽子只要是非两种,黑的至少有一顶。每一个人都能看到别的人帽子的色彩,却看不到本身的。主持人先让人人看看他人头上戴的是什么帽子,然后关灯,假如有人以为本身戴的是黑帽子,就打本身一个耳光。第一次关灯,没有声响。因而再开灯,人人再看一遍,关灯时依然阒寂无声。一直到第三次关灯,才有劈劈啪啪打耳光的声响响起。问有多少人戴着黑帽子?

答:有三个人戴黑帽。假设有N个人戴黑,当N=1时,戴黑人瞥见他人都为白则能一定本身为黑。因而第一次关灯就应该有声。能够判断N> 1。关于每一个戴黑的人来讲,他能瞥见N-1顶黑帽 ,并由此假定本身为 白。但守候N-1次还没有人打本身今后,每一个戴黑人都能晓得本身也是黑的了。所以第N次关灯就有N个人打本身。

对一批编号为1~100,悉数开关朝上(开)的灯举行以下*作:通常1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:末了为关熄状况的灯的编号。

答:若实际操作求解会相称烦琐。我们晓得,就某个亮着的灯而言,假如拨其开关的次数是奇数次,那末,效果它一定是关着的。依据题意可知,号码为N的灯,拨开关的次数即是N的约数的个数,约数个数是奇数,则N一定是平方数。由于10的平方即是100,可知100之内共有10个平方数,即,末了关熄状况的灯共有10盏,编号为1、4、9、16、25、36、49、64、81、100。
能够写一段代码跑一下:

var arr = [];
for(var i=0;i<100;i++){
    arr.push(true);
}

for(var j=0;j<100;j++){
    for(var i=0;i<100;i++){
        if((i+1)%(j+1) == 0){
            arr[i] = !arr[i];
        }
    }
}

for(var i=0;i<100;i++){
    if(arr[i] == false){
        console.log(i+1);
    }
}

运转效果也一样:

《口试逻辑题》

你让某些工资你工作了七天, 你要用一根金条作为酬劳.这根金条要被分红七块.你必须在天天的活干完后交给他们一块.假如你只能将这根金条切割两次,你怎样给这些工人分?

答:分红1、2、4;
第一天:给出去面值1的一块;
第二天:给出去面值2的一块,找回面值1的一块;
第三天:给出去面值1的一块;
第四天:给出去面值4的一块,找回面值2和面值1各一块;
第五天:给出去面值1一块;
第六天:给出去面值2的一块,找回面值1的一块;
第七天:给出去面值1的一块。

相似的问题另有:

援用笔墨

在房里有三盏灯,房外有三个开关,在房外看不见房内的状况,你只能进门一次,你用什 么方法来辨别谁人开关掌握那一盏灯

答: 假如“在房外看不见”可理解为:“看不见哪一个灯亮,而看得见房里亮不亮”的话:先看一个开关A,进门,肯定一盏,然后斜下不亮的一盏,出门,关掉A,开B,看房里是不是还亮。

八个球,从表面看是一样的,有一个球的质量重(或轻),其他七个球质量一样,称两次找出重的(或轻的)谁人球。

上一题的变种题,更难一些:

有12个小球,从表面看是一样的,在这12个小球里有一个是坏球,和别的11个好球分量差别,但不晓得是重照样轻,用一台天平只称三次,怎样找出这个坏球,且要肯定这个坏球是重了照样轻了。

https://wenku.baidu.com/view/…

    原文作者:yr1014
    原文地址: https://segmentfault.com/a/1190000009471064
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞