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瓶,最后需要暂时借一个瓶子。
相关推荐
在IT领域,二进制和十进制数的相互转换是一项基础且重要的技能,尤其是在计算机科学中。十进制是我们日常生活中最常用的数制,它基于10个符号(0到9),每个位置的数值是前一个位置的10倍。而二进制则是一种仅使用两...
<br>第三部分 数值计算与趣味数学篇<br> <br>075 绘制余弦曲线和直线的迭加<br>076 计算高次方数的尾数 <br>077 打鱼还是晒网 <br>078 怎样存钱以获取最大利息 <br>079 阿姆斯特朗数 <br>080 亲密数 <br>081 自守数 ...
本题是一道关于算法的趣题,旨在考察程序员对数字特性的理解以及对不同进制转换的掌握。题目要求找出所有在十进制、二进制和八进制表示下都是回文数的数字,且这个数字必须大于十进制数10。 首先,我们需要理解什么...
第三部分 测试要点与解题说明 第1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串与异常处理 第5章 文件与数据流 第6章 图形用户界面设计 第7章 小应用程序 第8章 多线程程序设计 第9章 ...
非10进制数的处理在计算机科学中常见,如二进制、十六进制等。对于这类问题,可以使用C语言的位运算或者转换函数来完成计算。例如,将一个十进制数转换为其他进制,可以先将数值除以目标进制,取余数并累加,直到...
【百钱买百鸡问题】是中国古代经典的数学趣题,也是华为OD(Organizational Development,组织发展)题库中常见的逻辑思维与算法练习题目。该问题源于宋朝数学家杨辉的《详解九章算术》一书,旨在考察应聘者在实际...
权重是根据九进制的位置计算的,从右到左,第一个位的权重是9^0=1,第二个位是9^1=9,第三个位是9^2=81,以此类推。对于这个特定的题目,选手需要直接计算结果,不需要编写源代码。 2. **顺子日期**: - 顺子日期...
4. 二进制"1111"转换为十进制是15,这是二进制与十进制之间的转换方法。 5. 十进制"21"转换为二进制是10101,同样涉及数制转换。 6. RAM代表随机存取存储器,是计算机内存的一种类型。 7. 五笔编码是一种汉字输入法...
八进制转十进制是数字系统转换的基础,Python提供了内置的函数进行这种转换。例如,使用`int()`函数配合`base`参数可以将八进制字符串转换为十进制整数。通过这个练习,学习者可以了解不同进制间的转换原理以及...
- **左移(<<)**:将二进制数的所有位向左移动指定的位数,右边空出的位置用0填充。 - **右移(>>)**:将二进制数的所有位向右移动指定的位数,左边空出的位置通常用符号位填充(对于无符号数则用0填充)。 #### ...
通过编译器,源代码可以被转换成计算机可执行的二进制文件(88.EXE)。 让我们深入探讨C语言在处理数学问题时的一些关键知识点: 1. 数据类型:C语言提供了多种数据类型,如int(整型)、float(浮点型)、double...
例如在LeetCode这样的在线编程平台上,"交替位二进制数"这道题就不仅是一道算法题,更是一次对位操作技巧的检验。 首先,让我们来看一下题目所要求的。"交替位二进制数"要求我们检查一个正整数的二进制表示是否具有...
- 采用二进制编码方式,将黑帽视为1,白帽视为0,通过累加每位学者帽子颜色的二进制值来决定何时举手。 - 当累加值达到某个预设值时,相应数量的学者同时举手表示自己戴的是黑帽。 - **答案**:通过二进制编码和...
学习者将了解二进制、八进制、十六进制之间的转换,还有二进制算术和逻辑运算。 “课件”标签提示我们,这套资源提供了一种互动式的学习体验,通过多媒体形式展示内容,使得学习更加生动有趣,同时可以随时暂停、...
6. 算法问题:如何快速找出一个 32 位整数的二进制表达里有多少个"1"? 答案:for(n=0; b; b >>= 1) if (b & 1) n++; 或 for(n=0; b; n++) b &= b-1; 7. 数组问题:如何在 O(N) 的时间找出一个大小为 N 的数组中的...
CTF题库通常由多个类别的挑战组成,例如Web安全、二进制反汇编、密码学、隐写术等。每个类别都包含多个挑战,每个挑战都有一个或多个标志(flag)。参赛者必须通过解决每个挑战来获取相应的标志,然后提交标志以获得...
知识点:这个问题考察了算法设计和二进制计算的能力,涉及到二进制计数和位操作。 问题7:重复数字 一个大小为 N 的数组,所有数都是不超过 N-1 的正整数。用O(N)的时间找出重复的那个数(假设只有一个)。一个大小...