12幣問題(微軟面試試題)

2021-09-26 21:21:23 字數 1354 閱讀 8650

這是一道數學題。

今有12枚外觀完全相同硬幣,其中11枚是**,質量完全相同;另一枚是次品,質量與**嚴格不同。有一精準輕天平,在忽略空氣阻力和重力加速度恆定的前提下,請設計一種方案,使得在僅用上述材料的前提下,至多稱量3次便找出次品。

首先,你要想辦法讓你的每次稱量變得更有意義。具體表現為:如果你只關心平還是不平,那麼你至多只能判斷出 23=

8<

122^3=8<12

23=8

<12

種情況,這顯然是不夠優秀的。我們驚喜地發現,33=

27>

123^3=27>12

33=2

7>12

,所以這道題貌似可做。

考慮一種很直觀的想法。如果我一次的稱量不是對半分的,那麼在最差情況下,我只能篩選出總數的不到一半的硬幣。這顯然沒有對半分更優,於是我們考慮對半分。經過2次稱量後,剩下 12×2

−2=3

12\times2^=3

12×2−2

=3枚硬幣。這時我們發現,由於你不知道次品的輕重情況,所以你不可能通過一次稱量找出次品。

剛剛這種做法有什麼弊端呢?把12個硬幣分成4組,每組3個。第一次挑兩組上稱。如果平,那麼我們這次的稱量的意義僅僅在於,將樣品容量減小一半;對於次品輕重情況,我們一概不知。考慮優化我們的分組方式,使得我們在減小規模的同時,知曉相對質量。換句話說,當我們稱到平衡的時候,增加我們獲取的資訊。

為了優化平衡的情況,嘗試分成3組,每組4個,即,,。這樣即使平衡,我們也獲得了更多的資訊。假設平衡,這樣問題就變成從4個裡面稱2次。這個問題顯然很好解決(第一次稱12,第二次稱13即可)。那我們就考慮不平衡的情況。不妨設1234 < 5678。

根據剛剛那套理論,我們再次嘗試對半分。我們發現,我們又繞回到原來的坑點了——貌似無論怎麼選,都有平衡的蛋疼情況。怎麼辦呢?

1234

<

5678

1234 < 5678

1234

<56

7812 =34

?12=34?

12=34?

容易理解,造成判斷困難的原因是,有一些優品始終被稱,干擾了判斷。

考慮將次品換邊,當天平兩端硬幣數相同時,天平的輕重情況總會改變。不妨將部分硬幣換邊。比如這樣

125

>

369125>369

125>36

99是從安全區借過來用的。經過這次稱量,我們最後得到形如

x

a

xaxa

orx

a>bc

xa>bc

xa>bc

這種情況,其中x是**。

這個時候,把bc稱一下就完事了。

微軟面試試題

part i.選擇題 70分鐘 1.求函式返回值,輸入x 9999 int func x return countx 2.為什麼返回區域性變數的引用不好?a,b,c,d不記得了,大概和記憶體,返回值等等有關。3.stack r,from the top to bottom 逐個取出放入queue q...

12個球問題 微軟面試題

現有12個球,其中有乙個是次品,但不知道它比正常的重還是輕,現在只有天平一架,請稱3次找出次品球。首先,把12個小球分成三等份,每份四隻。拿出其中兩份放到天平兩側稱 第一次 情況一 天平是平衡的。那麼那八個拿上去稱的小球都是正常的,特殊的在四個裡面。把剩下四個小球拿出三個放到一邊,另一邊放三個正常的...

大唐電信面試試題

考試時間一小時,第一部分是填空和選擇 1 數列6,10,18,32,問 是幾?2 某人出70買進乙個x,80賣出,90買回,100賣出,這樁買賣怎麼樣?3 月球繞地球一圈,至少要多少時間?4 7個人用7小時挖了7公尺的溝,以同樣的速度在50小時挖50公尺的溝要多少人?5 魚頭長9,魚尾等於魚頭加半個...