(二進制與三進制)趣味題

先來思考幾個問題,並不難,各位大牛應能秒殺:

1. 小明是個賣蘋果的,小紅一次在小明那買N(N<1024)個蘋果。小明每次都要數N個蘋果給小紅,唉,太麻煩了。於是小明想出了一種方法:他把蘋果分在10個袋子中,則無論小紅來買多少個蘋果,則他都可以整袋整袋的拿給小紅。問怎樣分配蘋果到各個袋子?

2. 有16種溶液,其中有且只有一種是有毒的,這種有毒的溶液與另一種試劑A混合會變色,而其他無毒溶液與A混合不會變色。已知一次實驗需要1小時,由於一次混合反應需要使用1個試管,問最少使用多少個試管可以在1小時內識別出有毒溶液?

3. 27個小球。其中一個比其他小球都要重一點。給你一個天平,最多稱3次,找出這個特殊的小球。

4. 有12個顏色大小一模一樣的小球,已知其中只有一隻重量有些微差別(提示:但並不知到底是重還是輕哦),現在用一個沒有砝碼的天平,最多稱三次把這個特殊的小球找出來。

5. 小莫有一個40磅的砝碼,一次失手掉到地上,結果摔成了4塊,心痛啊。但他卻意外的發現這4塊砝碼碎片可以在天平上稱1~40間的任意整數重量了,問4塊的重量各是多少?


6. 將區間 [0,1] 平均分爲3段,挖去中間的一段,即去掉 ( 1/3 , 2/3 ) ,然後將剩下的兩段同樣各自挖去中間1/3 。這樣無限挖下去,問區間中[ 0 , 1 ] 中是否有永遠不被挖掉的點?如果有,這些點的座標有什麼規律?

答案在下面,請先思考然後看答案!

解答: 

  發現錯誤或有更好解決方法的可留言告訴我,謝謝。第1、2題涉及二進制思想,大家平常都比較熟悉了,算是熱熱身。後面4題需要用到三進制和所謂的“平衡三進制”思想來解決,挺有趣的。

問題1: 

  答案:按1,2,4,8,16,.......,512

  分析

  第一個問題用二進制編碼思想可以輕鬆解決,相信學計算機的各位不會有什麼困難。

  按照二進制編碼的特點, n位二進制數的各個數位的權重從低到高分別是2^0  ,2^1 , 2^2 ,…… 2^( n – 1 ) 。  n位無符號二進制數可以表示0到(2^n)- 1 ,共n個數。

  而二進制數位只有1和0兩種狀態,正好對應題目中蘋果袋子的“給”與“不給”兩種狀態。因此只要將各個袋子分別裝入 2^0 , 2^1 , 2^2 , …… , 2^9 個蘋果即可滿足題目要求。例如:需要66個蘋果, 因66的二進制是 1000010 ,則小明只要將蘋果個數爲2^1(2個) 和2^6(64個)的袋子給小紅就可以了。

問題2: 

  答案與分析:

  如果沒有1小時的時間限制,那麼利用二分搜索的思想既可以解決問題。( 第一次取16種溶液中的8种放入一個試管,然後加入試劑A,看有沒有反應,根據結果再進行細分 。 這樣只需4個試管,但是需要4個小時 )有了這個1小時的時間限制後這種方法就不管用了。一種正確的解答如下:

  首先,將16種溶液編號爲0到15 ,編號的二進制形式表示如下:

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

  然後,取4個試管,第一個試管加入編號二進制形式中第一位(指最低位)是1的溶液,第二個試管加入編號第二位是1的溶液,其他2個試管分別加入編號第3,4位爲1 的溶液。然後再將試劑A加入4個試管中,看那些試管發生了反應,就可以知道有毒溶液的編號了。例如:第1、2、4號試管內發生了反應,則我們知道是第7號溶液是有毒的。原因是7的二進制編碼是1011,因此7號溶液是唯一加入了1、2、4號試管,而沒有加入3號試管的溶液。

問題3: 

  答案與分析:

  第3個問題可以使用三進制的原理來解決。先說說三進制,與二進制類似,三進制各個數位的權重分別爲3^0 ,3^1 , 3^2 ,……., 3^n 。三進制用0 , 1 , 2 這3個數碼錶示數 ,因此每個三進制數位有3種狀態。

對於每一次天平稱量的結果有3種:左邊較重、右邊較重、平衡。我們可以將左邊較重編號爲1,右邊較重編號爲2,平衡編號爲0 。

  首先將27個小球按照0到26編號,編號的三進制的形式如下:

000

001

002

010

011

012

020

021

022

100

101

102

110

111

112

120

121

122

200

201

202

210

211

212

220

221

222

  第一稱量將編號的三進制第1位爲1的小球(9個)放在左邊,編號第1位爲2的小球(9個)放在右邊,編號第1位爲0的不放。

  第二次稱量將編號的三進制第2位爲1的小球(9個)放在左邊,編號第2位爲2的小球(9個)放在右邊,編號第2位爲0的不放。

  第三次稱量將編號的三進制第3位爲1的小球(9個)放在左邊,編號第3位爲2的小球(9個)放在右邊,編號第3位爲0的不放。

  好了,根據3次稱量的結果,我們就可以知道較重的那個小球的編號了。假設3次稱量結果的編號分別爲0,1,2 ,那麼我們可以知道較重的是21號小球。因爲21的三進制是( 210 ) ,因此只有21號小球在第一次稱量時沒放,第二次放在左邊,第三次放在右邊。

問題4: 

     答案與分析:

   問題4算是問題3的升級版本吧。

  如果知道異樣小球比其他小球輕或重,那麼就好辦了,只要將12個小球分爲4,4,4三堆,稱3次是可以找到異樣小球的,方法很簡單,就囉嗦了。

  但是題目說明不知道異樣小球究竟是偏輕還是偏重,上面的方法就不靈了。一種可行的解法如下:

  假設異樣小球比正常小球要重,從12箇中抽取N個小球出來,包含異常小球的組合總是比不包含異常小球的組合要重。

  將12個小球按編號爲3進制的(000)至(102),如下:

000

001

002

010

011

012

020

021

022

100

101

102

  爲了方便下面的討論,先假設異常小球的編號是XYZ,那我們的目標就轉化爲如何稱3次來確定X,Y,Z的值。我們找出異樣小球的思路就是,通過稱量來不斷的縮小範圍,最終推理出異常小球的編號。

  注意到編號中最低位爲0,爲1和2的各有4個。因此將最低位爲1與2的分別放在天平兩邊稱一次。根據第一次稱的結果分爲下面兩種情況:

  (1)若第一次稱量時天平不平衡,則異樣小球必然在編號最低位爲1或2的小球中,即Z等於1或2 。

  最低位爲1或2的編號有下面8個:

001

002

011

012

021

022

101

102

  於是我們就將搜索範圍縮小到上面的8個小球中了。

  注意到在這8個數中第二位爲1和2的各有2個。就是下面這4個:

011

012

021

022

  因此第二次稱量時,將上面列出的五個數中第二位爲1和2的分別放天平兩邊。

  根據第二次稱量的結果,可分爲下面兩種情況:

  <1>第二次稱量時天平不平衡,那麼我們可以肯定異樣小球必然在第二位編號爲1或2的小球中,Y等於1或2 。

    不妨假設小球 011 + 012 >  021 + 022

    假設第一次稱量結果是最低位爲1的小球比最低位是2的要重,那麼我們可以肯定011號小球偏重或022號小球偏輕。

    那麼第三次稱量只需將011號或022號中任意一個與其他任意一個小球稱量,若平衡則是正常小球,否則就是異常小球了。

  <2>第二次稱量時天平平衡,則我們可以肯定異常小球編號第二位必然是0 。然後你可以仿照上面的做法通過編號的最高位來找出異常小球的編號。

(2)若第一次稱量時天平平衡,則異樣小球編號的最低位必然是0 。同樣你可以參考上面的思路通過編號的第2,3位來找到異樣小球,這裏就不囉嗦了。

  另有這個問題的另一種解法供參考:http://blog.sina.com.cn/s/blog_49d0731a010007i0.html

問題5: 

  答案:1,3,9,27

  分析:

  第5個問題就是所謂“德•梅齊里亞克的砝碼問題”(The Weight Problem of Bachet de Meziriac)  。

  這裏涉及到所謂“平衡三進制”的問題。平衡三進制,也叫對稱三進制,是一種以3爲基數,各個三進制位權重爲3^0,3^1,3^2…….,3^n ,以 -1,0,1爲基本數碼的三進制計數體系。n位三進制數表示的範圍是 -((3^n) -1)/2 ~ ((3^n) -1)/2 。

  需要明白的是,一個砝碼可以放在要稱量的物品的同側,也可以放在對側,當然也可以不放。砝碼的三種狀態可以表示爲:不放 ( 0 )、放在物品對側( +1 )、放在物品同側 ( -1 ) 。

  因此各個砝碼碎片的重量就是各個平衡三進制數位的權重( 3^0 , 3^1 , 3^2 , 3^3 ),即 1 , 3 , 9 , 27 。

  總結一下,上面1,2題利用二進制原理解決,而3,4,5題利用三進制原理解決。總的來說原理是一樣的,核心的區別在於二進制數位有2種狀態,三進制數位有3種狀態。 (廢話!)

問題6: 

  答案:康拓三分集

  分析

  首先用三進制數表示[0,1]間的小數,並將其畫在數軸上。你會發現第一次其實是挖掉了所有小數點後第1位爲1的所有數,而第二次則是挖掉了小數點後第2位爲1的所有數,按此類推。

  實質上就是挖去了三進製表示法中所有含有數位1的數。因此剩餘的數就是[0,1]區間上三進製表示法中不包含1的所有數的集合。這個集合就是所謂的康拓三分集。

  有趣的是:康拓三分集中元素的個數實質上是跟區間[0,1]上的實數個數是一樣多的(嚴格的表述應該是“等勢”)!

  若集合A與集合B的元素可以建立一種“一一對應”關係,則我們說A與B“等勢”。例如:偶數集E跟自然數集N是等勢的,因爲對於偶數集中的任何一個數a,都可以在自然數集中找到一個數a/2與之相對應,反之也成立。

  下面來簡單證明康拓三分集跟[0,1]區間是等勢的。

  首先用二進制表示法來表示[0,1]區間中的小數。

  然後將數位中所有“1”變爲“2”,這樣在數位上就跟康拓三分集中的一個數完全一致了。反過來,將康拓三分集中的任一個數(二進制表示)中的全部“2”變爲“1”,就唯一的對應[0,1]區間的一個二進制小數。因此,康拓三分集與 [0,1]可以建立一一對應關係,因而是等勢的。

  整體= 部分。 很神奇吧?一旦到了無窮的領域就會出現很多有趣的東西,例如,你可以證明一小段線段跟一條直線上的點是等勢的,完全平方數集合跟自然集是等勢的,等等。


轉載來源:http://www.cnblogs.com/heaad/archive/2010/12/22/1913733.html

發佈了22 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章