面試邏輯題

分享一下今天看到的幾道邏輯題html

一羣人開舞會,每人頭上都戴着一頂帽子。帽子只有黑白兩種,黑的至少有一頂。每一個人都能看到其它人帽子的顏色,卻看不到本身的。主持人先讓你們看看別人頭上戴的是什幺帽子,而後關燈,若是有人認爲本身戴的是黑帽子,就打本身一個耳光。第一次關燈,沒有聲音。因而再開燈,你們再看一遍,關燈時仍然鴉雀無聲。一直到第三次關燈,纔有劈劈啪啪打耳光的聲音響起。問有多少人戴着黑帽子?spa

答:有三我的戴黑帽。假設有N我的戴黑,當N=1時,戴黑人看見別人都爲白則能確定本身爲黑。因而第一次關燈就應該有聲。能夠判定N> 1。對於每一個戴黑的人來講,他能看見N-1頂黑帽 ,並由此假定本身爲 白。但等待N-1次尚未人打本身之後,每一個戴黑人都能知道本身也是黑的了。因此第N次關燈就有N我的打本身。code

對一批編號爲1~100,所有開關朝上(開)的燈進行如下*做:凡是1的倍數反方向撥一次開關;2的倍數反方向又撥一次開關;3的倍數反方向又撥一次開關……問:最後爲關熄狀態的燈的編號。htm

答:若實際操做求解會至關繁瑣。咱們知道,就某個亮着的燈而言,若是撥其開關的次數是奇數次,那麼,結果它必定是關着的。根據題意可知,號碼爲N的燈,撥開關的次數等於N的約數的個數,約數個數是奇數,則N必定是平方數。由於10的平方等於100,可知100之內共有10個平方數,即,最後關熄狀態的燈共有10盞,編號爲一、四、九、1六、2五、3六、4九、6四、8一、100。
能夠寫一段代碼跑一下:blog

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);
    }
}

運行結果也同樣:圖片

圖片描述

你讓某些人爲你工做了七天, 你要用一根金條做爲報酬.這根金條要被分紅七塊.你必須在天天的活幹完後交給他們一塊.若是你只能將這根金條切割兩次,你怎樣給這些工人分?get

答:分紅一、二、4;
第一天:給出去面值1的一塊;
次日:給出去面值2的一塊,找回面值1的一塊;
第三天:給出去面值1的一塊;
第四天:給出去面值4的一塊,找回面值2和麪值1各一塊;
第五天:給出去面值1一塊;
第六天:給出去面值2的一塊,找回面值1的一塊;
第七天:給出去面值1的一塊。it

相似的題目還有:console

引用文字class

在房裏有三盞燈,房外有三個開關,在房外看不見房內的狀況,你只能進門一次,你用什 麼方法來區分那個開關控制那一盞燈

答: 若是「在房外看不見」可理解爲:「看不見哪一個燈亮,而看得見房裏亮不亮」的話:先看一個開關A,進門,肯定一盞,而後斜下不亮的一盞,出門,關掉A,開B,看房裏是否還亮。

八個球,從外觀看是同樣的,有一個球的質量重(或輕),其他七個球質量同樣,稱兩次找出重的(或輕的)那個球。

上一題的變種題,更難一些:

有12個小球,從外觀看是同樣的,在這12個小球裏有一個是壞球,和其它11個好球重量不一樣,但不知道是重仍是輕,用一臺天平只稱三次,如何找出這個壞球,且要肯定這個壞球是重了仍是輕了。

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

相關文章
相關標籤/搜索