微軟的面試題(續)

來源:互聯網
上載者:User

第一組題:

  1)三根繩,第一根點燃兩端,第二根點燃一端,第三根不點

  第一根繩燒完(30分鐘)後,點燃第二根繩的另一端,第二根繩燒完(45分鐘)後,點燃第三根繩子兩端,第三根繩燒完(1小時15分)後,計時完成

  2)根據抽屜原理,4個

  3)3升裝滿;3升-〉5升(全注入);3升裝滿;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升裝滿;3升-〉5升;完成(另:可用回溯法編程求解)

  4)問其中一人:另外一個人會說哪一條路是通往誠實國的?回答者所指的那條路必然是通往說謊國的。

  5)12個球:

  第一次:4,4 如果平了:

  那麼剩下的球中取3放左邊,取3個好球放右邊,稱:

  如果左邊重,那麼取兩個球稱一下,哪個重哪個是次品,平的話第三個重,是次品,輕的話同理

  如果平了,那麼剩下一個次品,還可根據需要稱出次品比正品輕或者重

  如果不平:

  那麼不妨設左邊重右邊輕,為了便於說明,將左邊4顆稱為重球,右邊4顆稱為輕球,剩下4顆稱為好球

  取重球2顆,輕球2顆放在左側,右側放3顆好球和一顆輕球

  如果左邊重

  稱那兩顆重球,重的一個次品,平的話右邊輕球次品

  如果右邊重

  稱左邊兩顆輕球,輕的一個次品

  如果平

  稱剩下兩顆重球,重的一個次品,平的話剩下那顆輕球次品

  13個球:

  第一次:4,4,如果平了

  剩5顆球用上面的方法仍舊能找出次品,只是不能知道次品是重是輕

  如果不平,同上

6) 

  o o o

  o o o

  o o o

  7)

  23次,因為分針要轉24圈,時針才能轉1圈,而分針和時針重合兩次之間的間隔顯然>1小時,它們有23次重合機會,每次重合中秒針有一次重合機會,所以是23次

  重合時間可以對照手錶求出,也可列方程求出

  8)

  在地球表面種樹,做一個地球內接的正四面體,內接點即為所求

  第二組 無 標 准  

  第三組 

  1. 分成1,2,4三段,第一天給1,第二天給2取回1,第3天給1,第4天給4取回1、2,第5天給1,第6天給2取回1,第七天給1

  2. 求出火車相遇時間,鳥速乘以時間就是鳥飛行的距離

  3. 四個罐子中分別取1,2,3,4顆藥丸,稱出比正常重多少,即可判斷出那個罐子的藥被汙染

  4. 三個開關分別:關,開,開10分鐘,然後進屋,暗且涼的為開關1控制的燈,亮的為開關2控制的燈,暗且熱的為開關3控制的燈

  5. 因為可以用1,2,5,10組合成任何需要的貨幣值,日常習慣為10進位

  6. 題意不理解...*_*

  7. 012345 0126(9)78

  第四組 都是很難的題目 

  第一題:97 0 1 2 0 或者 97 0 1 0 2 (提示:可用逆推法求出)

  第二題:3架飛機5架次,飛法:

  ABC 3架同時起飛,1/8處,C給AB加滿油,C返航,1/4處,B給A加滿油,B返航,A到達1/2處,C從機場往另一方向起飛,3/4處,C同已經空油箱的A平分剩餘油量,同時B從機場起飛,AC到7/8處同B平分剩餘油量,剛好3架飛機同時返航。所以是3架飛機5架次。

第三題:需要建立數學模型 

  (提示,嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵)

  題目可歸結為求數列 an=500/(2n+1) n=0,1,2,3......的和Sn什麼時候大於等於1000,解得n>6

  當n=6時,S6=977.57

  所以第一個中轉點離起始位置距離為1000-977.57=22.43公裡

  所以第一次中轉之前共耗油 22.43*(2*7+1)=336.50升

  此後每次中轉耗油500升

  所以總耗油量為7*500+336.50=3836.50升

  第四題:需要建立數學模型

  題目可歸結為求自然數列的和S什麼時候大於等於100,解得n>13

  第一個杯子可能的投擲樓層分別為:14,27,39,50,60,69,77,84,90,95,99,100

  第五題:3和4(可嚴格證明)

  設兩個數為n1,n2,n1>=n2,甲聽到的數為n=n1+n2,乙聽到的數為m=n1*n2

  證明n1=3,n2=4是唯一解

  證明:要證以上命題為真,不妨先證n=7

  1)必要性:

  i) n>5 是顯然的,因為n<4不可能,n=4或者n=5甲都不可能回答不知道

  ii) n>6 因為如果n=6的話,那麼甲雖然不知道(不確定2+4還是3+3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)

  iii) n<8 因為如果n>=8的話,就可以將n分解成 n=4+x 和 n=6+(x-2),那麼m可以是4x也可以是6(x-2)而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8+2,所以總之當n>=8時,n至少可以分解成兩種不同的合數之和,這樣乙說不知道的時候,甲就沒有理由馬上說知道。

  以上證明了必要性

  2)充分性

  當n=7時,n可以分解成2+5或3+4

  顯然2+5不符合題意,捨去,容易判斷出3+4符合題意,m=12,證畢

  於是得到n=7 m=12 n1=3 n2=4是唯一解。

第六題:7隻(數學歸納法證明) 

  1)若只有1隻病狗,因為病狗主人看不到有其他病狗,必然會知道自己的狗是病狗(前提是一定存在病狗),所以他會在第一天把病狗處決。

  2)設有k只病狗的話,會在第k天被處決,那麼,如果有k+1隻,病狗的主人只會看到k只病狗,而第k天沒有人處決病狗,病狗主人就會在第k+1天知道自己的狗是病狗,於是病狗在第k+1天被處決

  3)由1)2)得,若有n只病狗,必然在第n天被處決

  第七題:(提示:可用圖論方法解決)

  BONO&EDGE過(2分),BONO將手電帶回(1分),ADAM&LARRY過(10分),EDGE將手電帶回(2分),BONO&EDGE過(2分) 2+1+10+2+2=17分鐘

  第八題:

  約定好一個人作為報告人(可以是第一個放風的人)

  規則如下:

  1、報告人放風的時候開燈並數開燈次數

  2、其他人第一次遇到開著燈放風時,將燈關閉

  3、當報告人第100次開燈的時候,去向監獄長報告,要求監獄長放人......

  按照機率大約30年後(10000天)他們可以被釋放

  第五組 無 標 准  

  第六組: 

  4.

char * strcpy(char * pstrDest,const char * pstrSource)
{
 assert((pstrDest!=NULL)&&(pstrSource!=NULL));

 char * pstr=pstrDest;
 while((*(pstrDest++)=*(pstrSource++))!='/0');
        return pstr;
}

  5.

char * strrev(char * pstr)
{
 assert(pstr!=NULL);
 
 char * p=pstr;
 char * pret=pstr;
 while(*(p++)!='/0');
 p--;
 char tmp;
 while(p>pstr)
 {
  tmp=*p;
  *(p--)=*(pstr);
  *(pstr++)=tmp;  
 }
 return pret;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.