`
美丽的小岛
  • 浏览: 297188 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

二进制与三进制的那些趣题<转>

阅读更多

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]可以建立一一对应关系,因而是等势的。

  整体= 部分。 很神奇吧?一旦到了无穷的领域就会出现很多有趣的东西,例如,你可以证明一小段线段跟一条直线上的点是等势的,完全平方数集合跟自然集是等势的,等等。

 

 

 

增加一些:

1. 有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间?

 

 

2. 有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?

 

 

3. 有一辆火车以每小时150公里的速度从北京开往广州,另一辆火车以每小时200公里的速度从广州开往北京。北京到广州铁路距离假设是3000公里。如果有一只神兽,以300公里每小时的速度和两辆火车同时启动,从北京出发,沿着铁路飞奔,碰到另一辆车后掉头,依次在两辆火车间来回飞奔,直到两辆火车相遇,请问,这只神兽共跑了多长距离?

 

 

4. 有两个罐子, 50个红色弹球,50个蓝色弹球,请你先将这100个球分入2个罐子中。然后让别人随机选择一个罐子,并在该罐子中随机选择一个小球。请问如何分配这些小球到罐子中才能让别人选中红球的概率最大?

 

 

5. 有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1。只称量一次,如何判断哪个罐子的药被污染了?

 

 

6. 对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。

 

 

7. 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?

 

 

8. 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?

 

 

 

 

参考:

 

1.  先将第一根香两端点燃,将第二根香一端点燃。等第一根香烧完(30分钟)。然后将第二根香的另一端也点燃,那么从这一刻开始到第二根香烧完就是15分钟。

 

2.  8双袜子,将商标拆开,两人各取其中一只即可。

 

3.  匀速运动公式: 距离=速度×时间 。由于两火车相对运动,算出它们相遇所需的时间,乘以神兽运动速度即可。

 

4.  一个罐子放1个红球,另一个罐子放入49个红球和50个蓝球。则选中红球概率为0.5 + 0.5 *0.49 = 0.745 。

 

5.  1号瓶子取1颗药,2号瓶子取2颗药,3号瓶子取3颗药,4号瓶子取4颗药。

 

6.  这一题的答案是编号为完全平方数的灯将熄灭,即1, 4, 9, 16, 25, 36, 49, 64, 81, 100号灯将熄灭。

分析:判断第N号灯最终是否熄灭只要看在1~N中N的约数(包括1)的个数到底是奇数还是偶数即可,若为奇数则第N号熄灭,若为偶数则开着。若N是素数,那么N的约数只有1和N,即约数个数为偶数。若N是合数且不是完全平方数,那么N必然可以作因数分解,分解为k种N1*N2的形式,其中N1 < N2 ,因此N的约数个数就是2k,必然为偶数。若N是完全平方数,那么N可做因数分解,分解为k种N1*N2的形式(N1 < N2),而且还可以分解为T*T的形式(因为N是完全平方数)。那么N的约数个数为2*k+1个,为奇数。

 

 

7.  3人。

分析:关键条件是:黑帽至少有一顶。(1)若只有1人戴黑帽,则那人马上就会知道,因此第一次关灯就该抽自己耳光了。(2)若有2人戴黑帽,他们看到对方的黑帽但不能确定自己是不是黑帽,因此第一次关灯不会扇自己耳光。由于他们都没有听到耳光声,因此他们知道黑帽不止一顶,那么唯一的可能就是自己也戴黑帽,于是第二次关灯时两人都会扇自己耳光。(3)若有3人戴黑帽,这3个人都看到另外2个人戴黑帽。在第一次关灯时他们都不能确定自己是否戴黑帽,而且他们都知道若只有2人戴黑帽那第二次关灯就会有人扇耳光了。但当第二次关灯还是没人抽耳光,那么3个人就会想,如果只有2个人戴黑帽那么第二次关灯时他们就该抽自己耳光啦,所以戴黑帽的必然不止2人,那唯一的可能就是自己也戴黑帽。4顶或以上的情况类似可推。这题的结论就是第几次关灯有人抽耳光,那么黑帽子就有几顶了。

 

8.  40瓶,最后需要暂时借一个瓶子。

分享到:
评论

相关推荐

    C源代码实例集

    &lt;br&gt;第三部分 数值计算与趣味数学篇&lt;br&gt; &lt;br&gt;075 绘制余弦曲线和直线的迭加&lt;br&gt;076 计算高次方数的尾数 &lt;br&gt;077 打鱼还是晒网 &lt;br&gt;078 怎样存钱以获取最大利息 &lt;br&gt;079 阿姆斯特朗数 &lt;br&gt;080 亲密数 &lt;br&gt;081 自守数 ...

    《二进制与计算机》优质课教学设计.doc

    教学实施过程 "教学 "教学活动 "设计意图 " "环节 " " " " "教师活动 "学生活动 " " "二进 "导入(3分钟) " "通过设置问 " "制与 "同学们,我们今天来学习一下二进制" "题"用手指表" "十进 "和计算机方面的知识。...

    有趣是正则表达式,可以被3整除的二进制数

    正则表达式的一些趣味题,可以被3整除的二进制数。

    程序员的算法趣题之Q01回文十进制数1

    ==================分割线===================思路因为是二进制的回文数,所以如果最低位是0,那么相应地最高位也是0.但是,以0

    Java程序设计习题集下载

    第三部分 测试要点与解题说明 第1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串与异常处理 第5章 文件与数据流 第6章 图形用户界面设计 第7章 小应用程序 第8章 多线程程序设计 第9章 ...

    FunnyAlgorithm:算法趣题解法保存

    算法趣题解法保存 Q1 回文十进制数 如果把某个数的各个数字按相反的顺序排列,得到的数和原来的数相同,则这个数就是“回文数”。譬如 123454321 就是一个回文数。 求用十进制、二进制、八进制表示都是回文数的所有...

    ctf题库ctf-pwn赛题收集

    CTF题库通常由多个类别的挑战组成,例如Web安全、二进制反汇编、密码学、隐写术等。每个类别都包含多个挑战,每个挑战都有一个或多个标志(flag)。参赛者必须通过解决每个挑战来获取相应的标志,然后提交标志以获得...

    200个经典C程序源码(包括基础篇+数据结构篇+数值计算与趣味数学篇+图形篇+系统篇+常见试题解答篇).zip

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    《妙趣横生的算法(C语言实现)》(杨峰 编著)

    也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft...

    C语言入门经典(第4版)--源代码及课后练习答案

    10.3.5 读取十六进制和八进制值 379 10.3.6 用scanf()读取字符 381 10.3.7 scanf()的陷阱 383 10.3.8 从键盘上输入字符串 383 10.3.9 键盘的非格式化输入 384 10.4 屏幕输出 389 10.4.1 使用printf()格式输出...

    《计算机应用基础》选择题.doc

    (A).ASC或.PRG (B).OBJ或.FOX (C).EXE或.COM (D).LIB或.SYS 7【单选题】微机中1K字节表示的二进制位数有____C____。 (A)1024 (B)1000 (C)8x1024 (D)8x1000 8【单选题】计算机的特点是处理速度快、计算精度高、存储...

    C语言220例从易到难源代码

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    C语言实例解析精粹(第二版) 光盘代码

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列) 104 ...

    220个C语言程序源代码.zip

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    200个C程序.rar

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    220个C语言程序源代码集合.zip

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    220个经典C程序源码文件,可以做为你的学习设计参考.zip

    093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列...

    算法心得:高效算法的奥秘(原书第2版).[美]Henry S.Warren,Jr(带详细书签).pdf

    11.3.1 用n的二进制分解式计算xn 250 11.3.2 用Fortran语言计算2n 251 11.4 整数对数 252 11.4.1 以2为底的整数对数 253 11.4.2 以10为底的整数对数 253 11.5 习题 257 第12章 以特殊值为底的数制 258 12.1 ...

Global site tag (gtag.js) - Google Analytics