聽說這是一道微軟面試題,今天無意中在網上看到。幾個月前我同學面試時遇到過乙個類似的題目,幾乎是原題。當時在群裡面討論過這個問題,答案不一。也沒有人知道最後的正確答案。下面是原題,帶答案解析。
小明和小強都是張老師的學生,張老師的生日是m月n日,
2人都知道張老師的生日是下列10組中的一天,
張老師把m值告訴了小明,把n值告訴了小強,
張老師問他們知道他的生日是那一天嗎?
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
小明說:如果我不知道的話,小強肯定也不知道
小強說:本來我也不知道,但是現在我知道了
小明說:哦,那我也知道了
請根據以上對話推斷出張老師的生日是哪一天?why?
1)首先分析這10組日期,經觀察不難發現,只有6月7日和12月2日這兩組日期的
日數是唯一的。由此可知,如果小強得知的n是7或者2,那麼他必定知道了老師的
生日。2)再分析「小明說:如果我不知道的話,小強肯定也不知道」,而該10組日期的
月數分別為3,6,9,12,而且都相應月的日期都有兩組以上,所以小明得知m後
是不可能知道老師生日的。
3)進一步分析「小明說:如果我不知道的話,小強肯定也不知道」,結合第2步
結論,可知小強得知n後也絕不可能知道。
4)結合第3和第1步,可以推斷:所有6月和12月的日期都不是老師的生日,因為
如果小明得知的m是6,而若小強的n==7,則小強就知道了老師的生日。(由第
1步已經推出),同理,如果小明的m==12,若小強的n==2,則小強同樣可以知道老師的生日。即:m不等於6和9。現在只剩下「3月4日 3月5日 3月8日 9月1日
9月5日」五組日期。而小強知道了,所以n不等於5(有3月5日和9月5日),此時,
小強的n∈(1,4,8)注:此時n雖然有三種可能,但對於小強只要知道其中的
一種,就得出結論。所以有「小強說:本來我也不知道,但是現在我知道了」,
對於我們則還需要繼續推理
至此,剩下的可能是「3月4日 3月8日 9月1日」
5)分析「小明說:哦,那我也知道了」,說明m==9,n==1,(n==5已經被排除,3月份的有兩組)
一道微軟面試題
每個飛機只有乙個油箱,飛機之間可以相互加油 注意是相互,沒有加油機 一箱油可供一架飛機繞地球飛半圈,問 為使至少一架飛機繞地球一圈回到起飛時的飛機場至少需要出動幾架飛機?所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場 3架飛機共6架次 這道題的關鍵應該是 繞地球飛 假設...
一道曾經微軟的面試題
題目描述 有10億個至多9位 號碼,找出這些 號碼不重複的個數,記憶體之給你256m的空間 分析 這相當於10億個int型整數,每個int佔四個位元組,40億個位元組,也就說儲存這些 號碼需要4g的記憶體空間,所以必須對這些 號碼進行壓縮 解決方法 可以用乙個位來表示這個 號碼是否存在,也就是說需要...
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...