大厂智力题讲解,学它!!!!(一)
內容介紹
- 1 小白鼠試藥問題
- 2 四人過橋問題
- 3 判斷病狗數量問題
- 4 飛機空中加油問題
- 5 湊容量問題
- 6 判斷藥污染問題
- 7 分鹽問題
- 8 求1000!問題
- 9 燒繩子問題
- 10 分金條問題
- 11 盲人分襪子問題(腦洞題)
1 小白鼠試藥問題
有 1000 瓶藥物,但是其中有一瓶是有毒的,小白鼠吃了一個星期以后就會死掉!請問,在一個星期內找出有毒的藥物,最少需要多少只小白鼠?
這個題看上去讓人摸不著頭腦,但其實就是考察的一個二進制位的問題
🎉解答:1000瓶藥物可以用10個二進制位來表示(10個二進制位最大可以表示1023),假設取十個瓶子,編號為1-10,從二進制編號第一位為1的瓶子中取一滴藥物到編號為1的瓶子里面,以此類推,用十個小白鼠分別編號1-10然后喝對應瓶子的藥物,一個星期后,死了的老鼠記為1,活著的記為0,從而構成一個10位的二進制數,此時二進制數對應的瓶子就是有毒的。
2 四人過橋問題
A、B、C、D 四個人,要在夜里過一座橋。他們通過這座橋分別需要耗時 1、2、5、10 分鐘,只有一支手電,并且同時最多只能兩個人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?
🎉解答:因為有時間限制,所以我們得充分利用好速度快的人,因為過橋的時間是根據慢的一方決定的,所以得讓慢的人一起過橋,這樣才能讓總時間短。
方案:
第一趟:AB過橋,然后A回來,花費3分鐘
第二趟:CD過橋,然后B回來,花費12分鐘
第三趟:AB過橋,花費2分鐘,總計17分鐘,滿足題意。
3 判斷病狗數量問題
有 50 家人家,每家一條狗。有一天警察通知, 50 條狗當中有病狗,行為和正常狗不一樣。每人只能通過觀察別人家的狗來判斷自己家的狗是否生病,而不能看自己家的狗,如果判斷出自己家的狗病了,就必須當天一槍打死自己家的狗。結果,第一天沒有槍聲,第二天沒有槍聲,第三天開始一陣槍響,問:一共死了幾條狗?
🎉解答:因為50條狗里面肯定有一條有病,所以我們先假設只有一條病狗,那么肯定有一個人在觀察的時候沒有看到病狗,所以第一天就會開槍,而第一天沒有槍聲說明至少有兩只病狗,若只有兩條,那么病狗主人前一天只看到了一條狗,所以第一天看完知道沒人開槍后就知道自己的狗是有病的,第二天肯定會開槍,而第二天沒有槍聲,那么說明至少有三條病狗,若只有三條,因為病狗主人只能看到兩條狗,所以第二天晚上知道沒槍聲的時候就知道自己的狗有病,所以第三天肯定會開槍,這樣結果就跟題目一樣,所以只有三條病狗即死了三條狗。
4 飛機空中加油問題
每個飛機只有一個油箱,飛機之間可以相互加油(注意是相互,沒有加油機)一箱油可供一架飛機繞地球飛半圈。
問題:為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?(所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場)
🎉解答:我們可以利用三架飛機實現目標。
ABC三架飛機同時從起點出發,當飛到一圈的1/8時,C分別給AB1/4油箱的油(此時AB油箱滿了),然后C返回,AB行駛到1/4的時候B將1/4油箱的油給A(A此時是滿油),然后B返回,A行駛到1/2時,B從反方向向A行駛,當行駛到一圈的3/4時AB相遇,此時B再給A1/4油箱的油然后和A一起飛向起點,此時C同樣從反方向向AB飛去,當AB行駛到全程的7/8時,ABC相遇,然后C分別給AB1/4油箱的油(此時三架飛機都只有1/4機箱的油),然后三架飛機一起回到起點。
5 湊容量問題
3ml 5ml 杯子各一個,拼出 4ml 的容量。
🎉解答:
方法一:將3ml杯子倒滿水然后倒入5ml杯子,重復操作一次,此時3ml杯子里還有1ml水,將5ml杯子里的水倒掉然后將3ml杯子中1ml水倒進5ml杯子中,然后3ml杯子再倒滿水倒到5ml杯子中這樣就是4ml了。
方法二:首先將5ml杯子倒滿水,然后倒入3ml杯子,剩下2ml,將3ml杯子里面的水倒掉,將5ml杯子里面的2ml水倒進3ml杯子里面,然后將5ml杯子倒滿水,再往3ml杯子里面倒水,3ml杯子滿的時候5ml杯子里面剛好有4ml的水。
6 判斷藥污染問題
你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被污染的藥丸是沒被污染的重量+1.只稱量一次,如何判斷哪個罐子的藥被污染了?
🎉解答:
假設4個罐子分別為a,b,c,d,每個藥丸的重量為x,從a取一顆藥丸,b取兩顆藥丸,c取三顆藥丸,d取4顆藥丸合在一起進行稱量
若a罐子藥丸被污染,則重量為(10x+1)
若b罐子藥丸被污染,則重量為(10x+2)
若c罐子藥丸被污染,則重量為(10x+3)
若d罐子藥丸被污染,則重量為(10x+4)
7 分鹽問題
有7克、2克砝碼各一個,天平一只,如何只用這些物品三次將140克的鹽分成50、90克各一份?
🎉解答:
第一次:用9克砝碼稱9克鹽出來。
第二次:將9克鹽和7克砝碼放在一邊然后稱出16克鹽出來。
第三次:將9克鹽和16克鹽放在一邊然后稱出25克鹽。
經過三次稱量就稱出了50克鹽,剩下的就是90克。
8 求1000!問題
小知識:求一個數的有幾位可以通過求1+log10(n)來得到
log10(1000!)可以表示為log10(1000*999*998…)=log10(1000)+log10(999)+log10(998)+…,這樣我們就可以通過一段代碼進行計算了。
🎉代碼:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <math.h> int main() {float sum = 0;int i = 1000;for (i = 1000; i >= 1; i--){sum += log10(i);}printf("1000!的位數為%d\n", 1 + (int)sum); }注意:sum是float類型,需要先強制類型轉換為int類型。
9 燒繩子問題
燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
注意:繩子不均勻說明繩子燒到一半時不代表半個小時。
🎉解答:
取兩條繩子,一條繩子從兩端開始燒,一條從一端燒,當第一條繩子燒完時花費30分鐘,此時再將另一條繩子的另一端點燃,當第二條繩子燒完時花費15分鐘,再取一根繩子從兩頭燒,燒完花費30分鐘,總共一小時十五分鐘。
10 分金條問題
你讓工人為你工作7天,給工人的回報是一根金條。金條平分成相連的7段,你必須在每天結束時給他們一段金條,如果只許你兩次把金條弄斷,你如何給你的工人付費?
🎉解答:
其實這個問題可以轉化為怎樣把7分成3部分然后用這三部分可以湊成1234567這七個數從而實現每天結束都能給工人一段金條。我們把金條分為1,2,4三部分,這樣第一天給第一段,然后第二天收回第一段然后給第二段,第三天給第一段,第四天收回第一段第二段然后給第三段,第五天給第一段,第六天收回第一段給第二段,第七天給第一段。
11 盲人分襪子問題(腦洞題)
有兩位盲人,他們都各自買了兩對黑襪和兩對白襪,八對襪子的布質、大小完全相同,而每對襪子都有一張商標紙連著。兩位盲人不小心將八對襪子混在一起。他們每人怎樣才能取回黑襪和白襪各兩對呢?
這個題目其實怎樣想都沒有一個方法將襪子分給兩人,但看似沒有答案的時候換個思路也許就是正確答案!!!!!
🎉解答:
每對襪子分的時候都將商標撕開然后一人一只,這樣最后兩個人剛好黑襪和白襪各兩對。
作者水平有限,若文章有任何問題歡迎私聊或留言,希望和大家一起學習進步!!!
創作不易,希望大家👍支持下,謝謝大家🙏
總結
以上是生活随笔為你收集整理的大厂智力题讲解,学它!!!!(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python桌面程序臃肿_危险的转变:P
- 下一篇: 拆解大数据总线平台DBus的系统架构