本文共 949 字,大约阅读时间需要 3 分钟。
有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),……如果一共有100层,共有多少个煤球?
每一层的煤球数目形成一个数列,该数列的通项公式为 ( a_i = i(i+1)/2 )。要计算100层的总煤球数目,我们需要对该数列求和。
将数列拆分为 ( a_i = i^2 + i ),因此总和为: [ S = \sum_{i=1}^{100} a_i = \sum_{i=1}^{100} \frac{i^2 + i}{2} = \frac{1}{2} \left( \sum_{i=1}^{100} i^2 + \sum_{i=1}^{100} i \right) ]
利用已知的求和公式: [ \sum_{i=1}^n i = \frac{n(n+1)}{2}, \quad \sum_{i=1}^n i^2 = \frac{n(n+1)(2n+1)}{6} ]
代入 ( n = 100 ): [ \sum_{i=1}^{100} i = \frac{100 \times 101}{2} = 5050 ] [ \sum_{i=1}^{100} i^2 = \frac{100 \times 101 \times 201}{6} = 338350 ]
因此: [ S = \frac{338350 + 5050}{2} = \frac{343400}{2} = 171700 ]
#includeusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int maxn = 1e5 + 5;const int mod = 1e9 + 7;void solve() { int temp = 0, ans = 0; for (int i = 1; i <= 100; ++i) { temp += i; ans += temp; } cout << ans << endl;}
171700
转载地址:http://vcsn.baihongyu.com/