筆試智力題

2021-06-14 07:32:15 字數 2242 閱讀 7550

1.如何快速找出乙個32位整數的二進位制表達裡有多少個"1"?用關於"1"的個數的線性時間?

答案1(關於數字位數線性):for(n=0; b; b >>= 1) if (b & 1) n++;

答案2(關於"1"的個數線性):for(n=0; b; n++) b &= b-1;

2.乙個大小為n的陣列,所有數都是不超過n-1的正整數。用o(n)的時間找出重複的那個數(假設只有乙個)。乙個大小為n的陣列,所有數都是不超過n+1的正整數。用o(n)的時間找出沒有出現過的那個數(假設只有乙個)。

答案:計算陣列中的所有數的和,再計算出從1到n-1的所有數的和,兩者之差即為重複的那個數。計算陣列中的所有數的和,再計算出從1到n+1的所有數的和,兩者之差即為缺少的那個數。

3.給出一行c語言表示式,判斷給定的整數是否是乙個2的冪。

答案:(b & (b-1)) == 0

4.地球上有多少個點,使得從該點出發向南走一英里,向東走一英里,再向北走一英里之後恰好回到了起點?

答案:「北極點」是乙個傳統的答案,其實這個問題還有其它的答案。事實上,滿足要求的點有無窮多個。所有距離南極點1 + 1/(2π)英里的地方都是滿足要求的,向南走一英里後到達距離南極點1/(2π)的地方,向東走一英里後正好繞行緯度圈一周,再向北走原路返回到起點。事實上,這仍然不是滿足要求的全部點。距離南極點1 + 1/(2kπ)的地方都是可以的,其中k可以是任意乙個正整數。

5.a、b兩人分別在兩座島上。b生病了,a有b所需要的藥。c有一艘小船和乙個可以上鎖的箱子。c願意在a和b之間運東西,但東西只能放在箱子裡。只要箱子沒被上鎖,c都會偷走箱子裡的東西,不管箱子裡有什麼。如果a和b各自有一把鎖和只能開自己那把鎖的鑰匙,a應該如何把東西安全遞交給b?

答案:a把藥放進箱子,用自己的鎖把箱子鎖上。b拿到箱子後,再在箱子上加一把自己的鎖。箱子運回a後,a取下自己的鎖。箱子再運到b手中時,b取下自己的鎖,獲得藥物。

6.兩個機械人,初始時位於數軸上的不同位置。給這兩個機械人輸入一段相同的程式,使得這兩個機械人保證可以相遇。程式只能包含「左移n個單位」、「右移n個單位」,條件判斷語句if,迴圈語句while,以及兩個返回boolean值的函式「在自己的起點處」和「在對方的起點處」。你不能使用其它的變數和計數器。

答案:兩個機械人同時開始以單位速度右移,直到乙個機械人走到另外乙個機械人的起點處。然後,該機械人以雙倍速度追趕對方。程式如下。

while(!at_other_robots_start)

while(true)

答案:每匹馬都至少要有一次參賽的機會,所以25匹馬分成5組,一開始的這5場比賽是免不了的。接下來要找冠軍也很容易,每一組的冠軍在一起賽一場就行了(第6場)。最後就是要找第2和第3名。我們按照第6場比賽中得到的名次依次把它們在前5場比賽中所在的組命名為a、b、c、d、e。即:a組的冠軍是第6場的第1名,b組的冠軍是第6場的第2名……每一組的5匹馬按照他們已經賽出的成績從快到慢編號:

a組:1,2,3,

4,5

b組:12

3,4,5

c組:1

2,3,4,5

d組:1,2,3,4,5

e組:1,2,3,4,5

從現在所得到的資訊,我們可以知道哪些馬已經被排除在3名以外。只要已經能確定有3匹或3匹以上的馬比這匹馬快,那麼它就已經被淘汰了。可以看到,只有上表中斜體的那5匹馬是有可能為2、3名的。即:a組的2、3名;b組的1、2名,c組的第1名。取這5匹馬進行第7場比賽,第7場比賽的前兩名就是25匹馬中的2、3名。故一共最少要賽7場。

這道題有一些變體,比如64匹馬找前4名。方法是一樣的,在得出第1名以後尋找後3名的候選競爭者就可以了。

8.題目如下:

0 1 2 3 4 5 6 7 8 9

_ _ _ _ _ _ _ _ _ _

在橫線上填寫數字,使之符合要求。

要求如下:對應的數字下填入的數,代表上面的數在下面出現的次數,比如3下面是1,代表3要在下面出現一次。

正確答案是:0 1 2 3 4 5 6 7 8 9

6 2 1 0 0 0 1 0 0 0

我的思路是:因為第二行的數字是第一行的數在下面出現的次數,下面10個格仔,總共10次。。。所以第2排數字之和為10。

首先從0入手,先填9,肯定不可能,9下面要是1,只剩8個位填0,不夠填8,8下面要填1,1要至少填2,後面不用再想,因為已經剩下7個位置,不夠填0……如此類推。到0下面填6的時候就得到我上面的答案了。

IT筆試面試智力題

受到嚴重挫傷,惡補惡補 題目1 12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種?問題分析 我們先把這12個人從低到高排列,然後,選擇6個人排在第一排,那麼剩下的6個肯定是在第二排.用0表示對應的人在第一排,用1表示對應的人在第二排,那麼含有6...

筆試智力題2

原題目 1.請在下面的選項中,選出你認為唯一正確的選項,並給出推理理由。a.本題沒有正確選項 b.本題有多個正確選項 c.d和e都不正確 d.b和c有乙個正確 e.c不正確 f.e和f有乙個正確 思路 1.首先排除a,因為如果a是對的,就與他說的沒有正確選項邏輯背離,a錯誤。2.假設d對,那麼c錯,...

筆試面試智力題001

1.100的階乘,末尾有幾個連續的零?如 2100的最後有2個零 2.1到100的階乘的和的末位數是幾?3.10000的階乘,末尾有多少個連續的零?答案自己找,就在我的部落格上 完整內容所在目錄 http www.mythroad.net tag q written examination and ...