百层煤球,正三棱锥的球体堆积问题。

煤球数目

有一堆煤球,堆成三角棱锥形。具体:

第一层放1个,

第二层3个(排列成三角形),

第三层6个(排列成三角形),

第四层10个(排列成三角形),

....

如果一共有100层,共有多少个煤球?

 

当我们看到这个问题时,其实第一反应,是用两层for循环,因为这个用计算机解决起来应该是很简单的,虽然会耗费一些内存空间,无非是等差数列的通项求和。

int i;
int j;
int sum = 0;

for(i = 1; i<= 100; i++)
    for(j = 1; j <= i; j++)
        sum += j; 

1+3+6+...+百层煤球,正三棱锥的球体堆积问题。,可问题是,这个看起来简单的求和,仿佛如一道大山挡在我们的面前。那么这有没有一个通用的数学公式呢?答案是有的。让我们开始推导一遍。

百层煤球,正三棱锥的球体堆积问题。

这是一个煤球层的俯视图,只画了一部分,但是也能够看清楚结构了,红色的是最底层。我们的思想是什么,就是要化三角形为正方形,这些层是可以通过移动方块而变成正方形的,让我们开始行动。

1.将 黑色 与 红色 之间的那一条斜线上的煤块,齐平的放入红色块中,

2.将黑色的那条斜线上的煤块,再齐平的放入红色块中

3.依次类推,我们会将红色平面填成一个正方形,而每一层的斜线又少了一层,并且这种少是隔一层少的,而不是连续少的。也就是平面正方形的边长间距为2,大家用头脑演示一遍这个过程,即可理解。

于是我们可以得出一个公式。

n^2 + (n-2)^2 + (n-4)^2 +.......+2直接上手写的演算过程。

百层煤球,正三棱锥的球体堆积问题。