《转》二进制与三进制的那些趣题

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]能够创建一一对应关系,于是是等势的。

  总体= 部分。 很神奇吧?一旦到了无穷的领域就会出现不少有趣的东西,例如,你能够证实一小段线段跟一条直线上的点是等势的,彻底平方数集合跟天然集是等势的,等等。

相关文章
相关标签/搜索