《轉》二進制與三進制的那些趣題

http://blog.csdn.net/zhuxiaoyang2000/article/details/6091767html

 

 

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

 

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

 

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

 

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

 

4. 有12個顏色大小如出一轍的小球,已知其中只有一隻重量有些微差異(提示:但並不知究竟是重仍是輕哦),如今用一個沒有砝碼的天平,最多稱三次把這個特殊的小球找出來。get

 

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

 

6. 將區間 [0,1] 平均分爲3段,挖去中間的一段,即去掉 ( 1/3 , 2/3 ) ,而後將剩下的兩段一樣各自挖去中間1/3 。這樣無限挖下去,問區間中[ 0 , 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個試管中,看那些試管發生了反應,就能夠知道有毒溶液的編號了。例如:第一、二、4號試管內發生了反應,則咱們知道是第7號溶液是有毒的。緣由是7的二進制編碼是1011,所以7號溶液是惟一加入了一、二、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]能夠創建一一對應關係,於是是等勢的。

  總體= 部分。 很神奇吧?一旦到了無窮的領域就會出現不少有趣的東西,例如,你能夠證實一小段線段跟一條直線上的點是等勢的,徹底平方數集合跟天然集是等勢的,等等。

相關文章
相關標籤/搜索