7.4 一棋盘的麦子
直觉告诉我们,长度达100m的纸张对折的次数应该比长度为0.297m的纸张对折的次数多得多。但是,我们的直觉出错了,通过7.3节的介绍可以看出,长度为0.297m的纸张沿长度方向可以对折7次(见表7-8),而长度为100m的纸张沿长度方向可以对折10次(见表7-9)。显然,长度增加了300多倍,但对折次数只增加了3次。
为什么会出现这种错觉呢?这是由于我们大部分时间里都是以线性方式来考虑问题,而这类翻番的问题,不是线性的问题。
下面再来看一个古老的问题,一个印度饶有趣味的故事。
7.4.1 舍罕王的赏赐
据说古代印度的舍罕王打算给国际象棋的发明人、印度的宰相西萨·班·达依尔以重重的赏赐。国王问他有什么要求,将尽量满意他的要求。
这位宰相意味深长地抿嘴笑着,跪在国王面前,指着放在国王膝盖上的国际象棋棋盘说道:“陛下,请您在这张棋盘的第1个小方格里给我1粒麦子,在第2个小方格里给2粒,第3格里给4粒,照这样下去,每1小格里都比前1小格的数量加1倍(如图7-6所示)。陛下啊,这样将棋盘上所有64个小方格的麦粒,都赏赐给您的仆人吧!”

图7-6
国王一听,认为这区区赏赐,微不足道。于是,满口答应道:“爱卿,你所求的并不多啊,你当然会如愿以偿的。”
国王为自己对这样一件奇妙的发明所许下的慷慨赏诺不致破费太多而暗暗高兴。他令人把一袋麦子拿到座前,开始往国际象棋棋盘上放置麦粒了。在第1格里放1粒,第2格里放2粒,第3格里放4粒,这样放到第20格,1袋麦子就空了,到第21格时,1袋麦子已经不够了!
接下去麦粒的数量1格接1格飞快地增长下去,1袋又1袋的麦子被扛到国王面前来,堆成了小山,可是棋盘上的格子还多着哩。
舍罕王愣了,他发现:即使拿来全印度的粮食,也不能兑现他对西萨·班·达依尔宰相许下的诺言了。
7.4.2 需要多少麦粒
那么,究竟需要多少麦粒才能完成舍罕王的赏赐呢?下面我们来计算一下。根据西萨·班·达依尔的要求,在棋盘的64个格子中,第1个格中放置1粒小麦,然后每个格子中的麦粒数量比前一个格子的麦粒数翻一番。
下面先计算前20个格子中每个格子的麦粒数量,具体如表7-12所示。可以看出,在棋盘前10个格子中,每个格子中的麦粒数都在1000粒以内。但是,随着麦粒数量的不断翻番,到第20个格子,麦粒数已超过50万粒了!
表7-12 每个格子的麦粒数量

其实,我们也可以不用这种表格来推算,而是用一个公式直接计算出棋盘的某个编号的格子应该放置多少粒麦粒,具体计算公式如下:

有了以上公式,就可直接计算第64格中应该放置多少麦粒了:

这个数太大了!具体有多大呢,我们将这些麦粒数量换算成重量来衡量一下。查询了一些资料,通常小麦千粒重35~40克,也就是说1公斤小麦大概有25000~28000粒。如果按28000粒小麦为1公斤,则第64格中放置的麦粒重量为:

仅棋盘这一格就需要3000多亿吨小麦,如果将棋盘中所有64格中的小麦数量累加起来,将需要更多的小麦。达依尔所要求的竟是全世界在两千年内所生产的全部小麦!
这么一来,舍罕王发现自己欠了宰相很大一笔债。要么是忍受西萨·班·达依尔没完没了的讨债,要么是干脆砍掉他的脑袋。国王大概选择了后面的这个办法。
舍罕王为什么会吃这样的亏呢?因为他根本没有这么巨大数量的感性认识,即使比他经验丰富、知识广博的现代人,也不能一下子直接觉察到这个数量有多大。
这就是翻番的威力!只有认识了翻番的威力,才能把握到数据快速增加的诀窍!
那么,如果按照西萨·班·达依尔的要求,最后究竟需要多少麦粒,折合成重量是多少吨呢?下面编写程序,借助计算机来帮助我们计算出最终结果。

这个程序比较简单,由于计算的麦粒数是一个非常大的数据,因此定义一个double变量来保存,这样将只能得到一个大约数据,麦粒数并不能精确到个位。
编译运行以上程序,得到如图7-7所示的结果。从运行结果可以看出,总的麦粒数约为第64格的麦粒数的2倍,折算成重量也约等于第64格的麦粒的2倍。

图7-7
