乐读窝

程序员的数学思维修炼

乐读窝 > 科普学习 > 程序员的数学思维修炼

7.3 对折纸张

书籍名:《程序员的数学思维修炼》    作者:周颖



我们已经知道翻番就是使得到的数为基数的2倍,下面我们再来研究与翻番相反的问题——折半,即指每次得到的数为基数的一半。

这节我们研究一个看似简单的问题——折纸,就是将纸张进行多次对折。这个操作可以比较直观地看到折半问题的效果。



7.3.1 有趣的问题:纸张对折


如图7-3所示,左边是一张纸,沿中线对折后得到右图的效果,这样就算完成了一次对折。接着看这样一个问题:一张纸能对折多少次?

图7-3

这个问题看起来很简单,感觉应该能对折很多次,至少不会少于10次吧。

是不是真的能对折任意多次,或对折10次以上呢?

我们来试一下。如图7-4(a)所示,首先将一张纸展平,然后对长边进行对折,得到右图所示效果。这样,对挤后的纸张厚度为2张纸的厚度。

图7-4

接着,如图7-4(b)所示,将2张纸再次沿同一方向进行对折,得到右图所示效果,对折后得到4张纸的厚度。

然后,如图7-4(c)所示,将4张纸再次沿同一方向进行对折,得到右图所示效果,对折后得到8张纸的厚度。

从图7-4中可以看到,经过3次沿同一方向对折后,对折边的长度已经只有原来长度的八分之一了。

这时可继续沿同一方向进行多次对折,当这一方向不能再对折时,接着沿对折后的长边再次进行对折。一共能对折多少次呢?

经过实验,对于常见的A4幅面的纸张,长宽方向都进行对折,对折次数最多达到7次。对于幅面很大的报纸(如对开的《人民日报》,其展开长度为841mm,宽度为594mm),对折次数最多达到9次。

读者可以马上拿一张纸来对折试试!



7.3.2 100米长的纸能对折几次


通过前面的试验我们可以发现,每对折一次,这叠对折后的纸的张数就会翻番,也就是说这叠纸的厚度会翻番。

并且,当这叠纸的厚度接近对折边的长度时,就没办法进行对折操作了(从理论上来说,对折边的长度应大于厚度,才能进行对折。但实际操作时,当厚度小于并接近对折边的长度时,就没办法进行对折了)。

有了以上分析,除了实际验证之外,我们也可以通过数学的方法,通过计算来进行验证。只需要计算每次对折后的厚度、对折边的长度,就可以方便地判断出是否还能继续对折,也就可以得到对折的次数了。下面,我们就来进行计算。

首先,计算A4幅面纸张能对折多少次。

已知A4幅面纸张的长为297mm,宽为210mm,每平方米70克的复印纸的厚度约为0.08mm。根据这个已知条件,我们来进行计算,每对折一次其对折边长度减半,而厚度翻番。具体计算过程如表7-8所示。

表7-8 A4纸对折过程

按表7-8中的计算,当按A4纸的长边(边长为297mm这边)连续进行6次对折后,其厚度已达到5.12mm,而长度只有4.64mm,因此,这时就无法再沿这边进行对折了。从第7次对折开始就沿A4纸的短边(边长为210mm)进行对折,第9次对折后,纸的厚度已达到40.96mm,而长度只有26.25mm了。显然没办法继续进行对折了。

也就是说,从理论上来讲,A4纸最多只能对折9次。在实际操作中,对折时重叠在一起的纸张厚度之间会有一些间隙,要占用一定的厚度空间,并且对折时需要足够的长度才能使一叠纸弯曲等原因,肯定达不到理论上对折9次的效果。通常A4纸只能对折7次!

从表7-8中可看到,纸张的厚度是影响对折次数的一个关键因素,那么,我们找很薄的纸张进行对折,对折次数是不是能明显增加呢?我们再选择A4幅面的薄纸来试一下。

每平方米16克的薄页纸的厚度为0.036mm,假设我们使用A4幅面的这种纸来进行对折,能对折多少次呢?计算过程如表7-9所示。

表7-9 A4薄纸对折过程

从表7-9中可看出,虽然16g纸张的厚度比70g纸张的厚度少了一半多,但对折次数并没有增加1倍,而仅仅增加了1次!

按照以上分析,似乎当纸的长度足够长时,对折的次数就可以为任意多次。那么,这个结论正确吗?我们来验证一下。

长度为297mm的纸张只能对折9次(理论上),我们将长度明显增加,增长到100m(即100000mm),相对于A4纸张来说,长度方向增加了300多倍,对折次数能增加多少呢?还是看实际计算过程吧,如表7-10所示。

表7-10 长度100m纸张对折过程

从表7-10中的计算结果可看出,虽然纸张的长度增加了300多倍,但是对折次数并没有显著增加,只增加了1~2次而已。

在表7-10中,计算了两种厚度,一种是按单张纸厚0.1mm进行计算,一种是按单张纸厚0.036mm进行计算。

从上面的分析可以看到,对折的关键还是在于纸张的厚度,每对折一次,纸的厚度值就翻一番。根据本章前面介绍的翻番知识,可用以下公式计算对折后的厚度:

根据以上公式,可以计算出对折n次后纸的厚度是单张纸厚度的多少倍,如表7-11所示。

表7-11 对折几次后厚度对比表

从表7-11中可看出,当对折40次后,得到的厚度为单张纸厚度的1.09951×1012倍。假设单张纸的厚度为0.1mm,则对折40次后的厚度为:

也就是说,将厚度为0.1mm的纸张对折40次,得到对折后纸张的厚度将达到10万公里以上,可以绕地球17圈!



7.3.3 计算对折次数的程序


对于纸张的对折,如果每改变一次长度、宽度或纸张的厚度,我们都需要重新去推算一次,会比较麻烦。作为程序员,首先想到的就是编写一个程序,能快速计算出理论上的对折次数。这个程序比较简单,只需要重复计算对折边长、对折厚度,然后进行判断即可。具体程序如下:

在以上程序中,由于在长度或宽度方向进行对折的操作都是相同的,因此使用一个数组来保存长度和宽度,方便程序中使用循环处理对折。

编译并运行以上程序,参照表7-8所示的数据,输入纸张的宽度为297、宽度为210、厚度为0.08,则可得到如图7-5所示的运行结果。

图7-5