十八世纪初,莱布尼茨发明了二进制数,当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用。二进制数以其工作可靠,运算简单,逻辑严密,容易实现 等特点,成为了计算机的专用语言。在计算机科学和大量应用数学领域中,二进制记数法是必不可少的。在趣味数学方面,同样也有广泛的应用。
让我们先来看一个经典的数学趣题:
问题1 、一工人工作 7 天,老板有一段黄金,每天要给工人 1/7 的黄金作为工资,老板只能切这段黄金 2 刀,请问怎样切才能每天都给工人 1/7 的黄金?
这题不简单吧?小心别把脑子都想破了。 在给出答案之前,先让我们看另一个简单的例子:
问题2 、用天平称 1~63 克整数克重的物品,至少要配备几只多重的砝码(砝码只能放在天平的一端)?
没有学过二进制的人是很难想到答案的,可是如果你知道二进制数,那就不难了。我们知道二进制中只有 0 和 1 两个数字,它的各位数字的权值从小到大依次为 2^0 , 2^1 , 2^2 , 2^3 。。。。我们用一个数的每位数字乘以其权值所得到的乘积之和来表示这个数。对于一个具有 8 位的二进制数来说,它可以表示的数据范围是 0~2^8 。
63 = 2^6 – 1 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5
所以,我们只需配备 2^0 =1 , 2^1 = 2 , 2^2 = 4 , 2^3 = 8 , 2^4 = 16 , 2^5 = 32 五种不同克数的砝码各一个。
类似的题目还有如何装苹果:
问题3 、现有一笔出售苹果的生意,已知客人可能需要的苹果数量肯定是 1 个到 1000 个之间,但不知道具体数字。客人要求必须全部用他提供的箱子装整箱(每个箱子都最多可以装 1000 个苹果),箱子一旦装成就无法再拆开重装。 你手中有 1000 个苹果, 10 个箱子,客人需要的苹果数量未知,问怎么装才能满足客人的需要?
解题的原理和上题是一样的,都是利用二进制数的记数原理。因为 1000 < 2^10 = 1024 ,所以只要使用 2^0 , 2^1 , 2^2 , 2^3 , 2^4 , 2^5 , 2^6 , 2^7 , 2^8 , 2^9 十个数,就可以表示 1 到 1023 之间的所有数。
例如: 30 = 2^1 + 2^2 + 2^3 + 2^4 ; 75 = 2^0 + 2^1 + 2^3 + 2^6 等。
但是现在苹果的总数不是 1023 个,而是 1000 个,所以第 10 个箱子装的苹果数不是 512 个,而是 489 个。
1000 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 489 ;
所以这 10 个箱子中每个箱子依次装 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128 , 256 , 489 个苹果,就可以满足整箱提供给客人任意数量苹果的要求。
现在明白第一个题目的解法了吧?对!就是二进制。
因为 7 < 2^3 = 8 ,所以只要使用 2^0 , 2^1 , 2^2 三个数,就可以表示 1 到 7 之间的所有数。那么我们只要把金条分成三份,比例为 1:2:4 ,也就是第一刀切下金条的七分之一(设为 黄金A ),第二刀切下金条的七分之二(设为 黄金 B ),剩下的部分刚好为金条的七分之四(设为 黄金 C )。我们只要按照如下的方法发放工资,就解决问题了:
第一天: 给长工 黄金 A ; ( 1 = 2^0 )
第二天: 给长工 黄金 B ,并把 黄金 A 拿回来;( 2 = 2^1 )
第三天 : 给长工 黄金 A ;( 3 = 2^0 + 2^1 )
第四天 : 给长工 黄金 C ,并把 黄金 A 和 黄金 B 拿回来;( 4 = 2^2 )
第五天 : 给长工 黄金 A ;( 5 = 2^0 + 2^2 )
第六天 : 给长工 黄金 B ,并把 黄金 A 拿回来;( 6 = 2^1 + 2^2 )
第七天 : 给长工 黄金A 。( 5 = 2^0 + 2^1 + 2^2 )
上面三个问题已经很能说明二进制在趣味数学中的应用了,我们使用这种方法可以解决一系列的此类问题。下面是一个有趣的药瓶问题:
问题4 、一家药店收到运来的某种药品十瓶。每瓶装药丸 1000 粒。药剂师怀特先生刚把药瓶送上架子,一封电报接踵而来。怀特先生把电报念给药店经理布莱克小姐听。
怀特先生:“特急!所有药瓶须检查后方能出售。由于失误,其中有一瓶药丸每粒超重 10 毫克。请即退回分量有误的那瓶药。怀特先生很气恼。
怀特先生:“倒霉极了,我只好从每瓶中取出一粒来称一下。真是胡闹。
怀特先生刚要动手,布莱克小姐拦住了他。布莱克小姐:“等一下,没必要称十次,只需称一次就够了。”
这怎么可能呢?
布莱克小姐的妙主意是从第一瓶中取出 1 粒,从第二瓶中取出 2 粒,第三瓶中取出 3 粒,以此类推,直至从第十瓶中取出 10 粒。把这 55 粒药丸放在秤上,记下总重量。如果重 5510 毫克,也就是超过规格 10 毫克,她当即明白其中只有一粒是超重的,并且是从第一瓶中取出的。
如果总重量超过规格 20 毫克,则其中有 2 粒超重,并且是从第二瓶中取出的,以此类推进行判断。所以布莱克小姐只要称一次,不是吗?
六个月后,药店又收到此种药品十瓶。一封加急电报又接踵而至,指出发生了一个更糟糕的错误。
这一次,药丸每粒超重仍然是 10 毫克,但是对超重药丸的瓶数无可奉告,也就是说可能有好几个药瓶超重。怀特先生气恼极了。怀特先生:“布莱克小姐,怎么办?我们上次的方法不中用了。布莱克小姐没有立即回答,她在思索这个问题。
布莱克小姐:“不错。但如果把那个方法改变一下,我们仍然只需称一次就能把分量有误的药品识别出来。这回布莱克小姐又有什么好主意?
请大家仔细思考,然后运用二进制原理来解决吧。
在第一个秤药丸问题中,我们知道只有一瓶药丸超重。从每瓶中取出不同数目的药丸(最简单的方式就是采用计数序列),我们就可使一组数字和一组药瓶成为一一对应的关系。
为了解决第二个问题,我们必须用一个数字序列把每瓶药单独标上某个数字,且此序列中的每一个子集必须有一个单独的和。有没有这样的序列?有的,最简单的就是下列二重序列: 1 , 2 , 4 , 8 , 16 ,。。。这些数字是 2 的连续次幂,这一序列为二进制记数法奠定了基础。
在这个问题中,解法是把药瓶排成一行,从第一瓶中取出 1 粒,从第二瓶中取出 2 粒,从第三瓶中取出 4 粒,以此类推。取出的药丸放在秤上称一下。假设总重量超重 270 毫克,由于每粒分量有误的药丸超重 10 毫克,所以我们把 270 除以 10 ,得到 27 ,即为超重药丸的粒数。把 27 化成二进制数: 11011 。在 11011 中自右至左,第一,二,四,五位上的“ 1 ”表示其权值分别为 1 , 2 , 8 , 16 。因此分量有误的药瓶是第一,二,四,五瓶。
这里有一个简单的扑克魔术,可叫你的朋友莫名其妙。这个戏法也许看上去与砝码问题毫无关系,但他们的依据是相同的,都是二进制原理。
请别人把一副牌洗过,然后放进你的口袋,再请人说出一个 1 至 15 以内的数字。然后你把手插进你的口袋里,一伸手就取出一组牌,其数值相加正好等于他所说的数字。
此秘密简单的很。在耍魔术之前,预先取出 A , 2 , 4 , 8 各一张放入口袋。这副牌缺少区区四张,不大可能为人察觉。洗过的牌放入口袋后,暗中将其排置于原先已经放在口袋中的四张牌的后面。请别人说出一个数字,你用心算将此数表示成 2 的幂的和。如果是 10 ,那你就应想到: 8+2=10 , 随即伸手入袋,取出 2 和 8 的牌示众。
心灵感应游戏的依据也是二进制原理,准备六张卡片,分别记为 A , B , C , D , E ,上面写着 1~31 之间的一些整数。请一位观众想好此范围内的一个数字(例如某个人的年龄),然后请他把所有上面有此数字的卡片都交给你。你随即说出他心中所想的那个数字。
卡片如下:
A : 1 3 5 7
9 11 13 15
17 19 21 23
25 27 29 31
B : 2 3 6 7
10 11 14 15
18 19 22 23
26 27 30 31
C : 4 5 6 7
12 13 14 15
20 21 22 23
28 29 30 31
D : 8 9 10 11
12 13 14 15
24 25 26 27
28 29 30 31
E : 16 17 18 19
20 21 22 23
24 25 26 27
28 29 30 31
秘诀就是把每张卡片上 2 的幂的第一个数字相加。例如,如果把卡片 C 和 E 交给你,你只要将上面第一个数字 4 和 16 相加,便知道别人心中所想的数字是 20 。
这是为什么呢?
我们观察卡片上的数字,可以发现这样一个规律:第一张卡片 (A) 上的数字如果用五位二进制表示,则分别为 00001 , 00011 , 00101 , 00111 , 01001 , 01011 , 01101 , 01111 , 10001 , 10011 , 10101 , 10111 , 11001 , 11011 , 11101 , 11111 。
第二张卡片 (B) 上的数字如果用五位二进制表示,则分别为 00010 , 00011 , 00110 , 00111 , 01010 , 01011 , 01110 , 01111 , 10010 , 10011 , 10110 , 10111 , 11010 , 11011 , 11110 , 11111 。
第三张卡片 (C) 上的数字如果用五位二进制表示,则分别为 00100 , 00101 , 00110 , 00111 , 01100 , 01101 , 01110 , 01111 , 10100 , 10101 , 10110 , 10111 , 11100 , 11101 , 11110 , 11111 。
请大家注意观察,第一张卡片上每个二进制数的右起第一位都是“ 1 ”,第二张卡片上每个二进制数的右起第二位都是“ 1 ”,第三张卡片上每个二进制数的右起第三位都是“ 1 ”。依此类推,我们可以发现第 n 张卡片上每个二进制数的右起第 n 位都是“ 1 ”。
观众所想的数字和卡片的关系只有“有”和“无”两种状态,正好与二进制数码 0 与 1 一一对应。“有”我们就记为“ 1 ”,“无”我们就记为“ 0 ”,这样观众交给我们的卡片组合,就对应一个二进制数,如把卡片 C 和 E 交给你,那卡片组合就是“有无有无无”,对应二进制数为“ 10100 ”,即十进制数“ 20 ”。又如把卡片 A , B 和 E 交给你,那卡片组合就是“有无无有有”,对应二进制数为“ 10011 ”,即十进制数“ 19 ”。
二进制数的位数越多,能够表示的数值就越大,如果有 6 张卡片,则表示的数字范围扩大到 1~63 , 7 张卡片则可以表示 1~127 。
有时,魔术师为了使得这个戏法显得更加玄妙,故意把每张卡片涂上各种不同的颜色。他只需记住每种颜色所代表的 2 的幂。例如,红卡片代表 1 ,橙卡片代表 2 ,黄卡片代表 4 ,绿卡片代表 8 ,蓝卡片代表 16 ,紫卡片代表 32 (可依据彩虹的诸色顺序)于是,魔术师站在大房间的一头,请人想好一个数字,并且把上面有此数字的卡片置于身旁,他即可根据那人身旁的卡片的颜色随口说出别人心中所想的数字。
根据这个原理,人们还设计来好玩的猜姓氏和年龄的游戏:
表演者拿出七张卡片,每张卡片上都写满了数字和姓氏,卡片如下:
表一:
赵 1 孙 3 周 5 郑 7 冯 9 褚 11 蒋 13 韩 15 朱 17 尤 19 何 21 施 23 孔 25 严 27 金 29 陶 31
戚 33 邹 35 柏 37 窦 39 云 41 潘 43 奚 45 彭 47 鲁 49 昌 51 苗 53 花 55 俞 57 袁 59 邦 61 史 63
费 65 岑 67 雷 69 倪 71 滕 73 罗 75 郝 77 安 79 乐 81 时 83 皮 85 齐 87 伍 89 元 91 顾 93 平 95
和 97 肖 99
表二
钱 2 孙 3 吴 6 郑 7 陈 10 褚 11 沈 14 韩 15 秦 18 尤 19 吕 22 施 23 曹 26 严 27 魏 30 陶 31
谢 34 邹 35 水 38 窦 39 苏 42 潘 43 范 46 彭 47 韦 50 昌 51 凤 54 花 55 任 58 袁 59 鲍 62 史 63
廉 66 岑 67 贺 70 倪 71 殷 74 罗 75 邬 78 安 79 于 82 时 83 卞 86 齐 87 余 90 元 91 孟 94 平 95
穆 98 肖 99
表三:
李 4 周 5 吴 6 郑 7 卫 12 蒋 13 沈 14 韩 15 许 20 何 21 吕 22 施 23 华 28 金 29 魏 30 陶 31
喻 36 柏 37 水 38 窦 39 葛 44 奚 45 范 46 彭 47 马 52 苗 53 凤 54 花 55 柳 60 邦 61 鲍 62 史 63
薜 68 雷 69 贺 70 倪 71 毕 76 郝 77 邬 78 安 79 傅 84 皮 85 卞 86 齐 87 卜 92 顾 93 孟 94 平 95
尹 100
表四
王 8 冯 9 陈 10 褚 11 卫 12 蒋 13 沈 14 韩 15 张 24 孔 25 曹 26 严 27 华 28 金 29 魏 30 陶 31
章 40 云 41 苏 42 潘 43 葛 44 奚 45 范 46 彭 47 方 56 俞 57 任 58 袁 59 柳 60 邦 61 鲍 62 史 63
汤 72 滕 73 殷 74 罗 75 毕 76 郝 77 邬 78 安 79 廉 88 伍 89 余 90 元 91 卜 92 顾 93 孟 94 平 95
表五
杨 16 朱 17 秦 18 尤 19 许 20 何 21 吕 22 施 23 张 24 孔 25 曹 26 严 27 华 28 金 29 魏 30 陶 31
郎 48 鲁 49 韦 50 昌 51 马 52 苗 53 凤 54 花 55 方 56 俞 57 任 58 袁 59 柳 60 邦 61 鲍 62 史 63
常 80 乐 81 于 82 时 83 傅 84 皮 85 卞 86 齐 87 廉 88 伍 89 余 90 元 91 卜 92 顾 93 孟 94 平 95
表六:
吴 32 成 33 谢 34 邹 35 喻 36 柏 37 水 38 窦 39 章 40 云 41 苏 42 潘 43 葛 44 奚 45 范 46 彭 47
郎 48 鲁 49 韦 50 昌 51 马 52 苗 53 凤 54 花 55 方 56 俞 57 任 58 袁 59 柳 60 邦 61 鲍 62 史 63
黄 96 和 97 穆 98 肖 99 尹 100
表七:
唐 64 费 65 廉 66 岑 67 薜 68 雷 69 贺 70 倪 71 汤 72 滕 73 殷 74 罗 75 毕 76 郝 77 邬 78 安 79
常 80 乐 81 于 82 时 83 傅 84 皮 85 卞 86 齐 87 廉 88 伍 89 余 90 元 91 卜 92 顾 93 孟 94 平 95
黄 96 和 97 穆 98 肖 99 尹 100
表演者说:“任何人只要你的年龄和姓氏在这几张上,我都可以立即猜中。”
他的话音刚落,有人说:“我的年龄在第一张表上。”
“别的表上都没有么?”表演者问。
那人又详细地端详一下,补充说:“第三张、第五张表上也有。”
“凡是表上有的,不能遗漏!”表演者说,“如果你的年龄只在第一、三、五三张表上,那么你的年龄应该是 21 岁。”
果然猜中了!
又有人说;“我的姓在二、三、四、五、七表上有。”
“这就是说,你是孟老夫子的后代了!”
人们接二连三地问,表演者一个个回答,竟然没有一次失误,大家惊奇得目瞪口呆。可是,谁都不了解这奇特的表格里隐藏着的秘密,除了聪明的你。