蘋果軟體工程師面試題目!?

你有100枚硬幣,將它們平擺在桌軟體工程師求職者:你有100枚硬幣,將它們平擺在桌面上,每個都有正反面。其中,10個正面朝上,90個反面朝上。你不能觸摸、看或者是以任何其它方式去感知它們的狀態。請將硬幣分成兩堆,使每一堆里正面朝上的硬幣數目一樣。 求解?


隨便挑十個放一堆然後全翻過來就行了。假設挑出來的十個沒翻之前裡面有M個正面10-M個反面,因為一共有10個正面則剩餘另一堆是10-M個正面,然後把挑出來的十個全翻過來變成10-M個正面M個反面,然後兩堆都有10-M個正面就均分了#(吐舌)


全部立起來


隨便取出一堆,設為 x正,y反。一共x個。剩下一堆是10-x 正, 90-y反。

考慮到要兩堆正面一樣,肯定要利用對稱性翻硬幣。而且不能翻一堆的一部分,因為午飯控制翻了中多少是正,多少是反。那樣翻會引出更多變數。

考慮翻一整堆。比如(正,反)=(10-x,90-y)這堆。結果(正,反)=(90-y,10-x)。如果兩堆正相同:x = 90 -y。即x+y=90

很神奇,即第一堆取90個即可。無論x,y各自數值為多少。

這題目應該和程序演算法沒什麼關係。基本的初中數學思辨過程,加上腦筋急轉彎,加上些許運氣即可。


我想強答一下

要是分成5050兩堆然後空中拋,總會正面數量一樣的嘛。不過這應該不是應聘這個職位該有的思想啊哈哈哈


樓上蔣瀟回答的挺好的了,我狗尾續貂給個更具體的思路。既然是挑硬幣,假設我挑出N個組成A組,剩下的100-N個是B組,而恰巧A組裡有M個正面朝上。那麼現在,A組中,正面反面分別是M,N-M。B組中,正面反面分別是10-M,90-N+M。你不能摸不能看,所以只能控制N,不能控制M。如果不做任何後續操作,在M未知的情況下,你不可能滿足題目條件。所以只能選擇翻面--同樣的道理,你不能控制翻哪些,就只能全翻。假設全翻A組,那麼你得到N-M正面和M反面。如果你使N=10,則完成要求,而且這是完全可控的。當然你可以全翻B組,由於對稱性,結果一樣。


我的第一想法是選取任意50枚硬幣把他們都翻面。好像就可以了。

然後仔細看了看題發現我錯了。


對於高票的回答,如果取的第一隊有M個正面,是無法保證第二隊有10-M個正面的,因為總共只取了20個,不是100個。

我覺得還不如只取2個,每個一隊,這兩個都是正面或者都是背面的概率是0.9*0.9+0.1*0.1=82%


推薦閱讀:

現在的小孩的智力比20多年前有顯著提高嗎?
有哪些比較經典又有難度的邏輯智力題?類似海盜分金和十二個球。
用什麼辦法可以提高智商?

TAG:蘋果公司AppleInc | 面試 | 智力 | 信息技術IT |