第一题
【题目】 煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
…
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
【提示】
找出每一层煤球个数的规律,循环累加计算
根据题目,我们可以画出前面4个图形,如下:
不难看出,每一层都比上一层多 i 个球(假设 i 为层数),那么有如下代码:
#include<iostream>
using namespace std;
int main() {
int n = 100, sum = 0;
int ar[101] = { 0 };
//计算出每一层煤球的个数
for (int i = 1; i <= n; i++) {
sum += i;
ar[i - 1] += sum;
}
//求和
for (int i = 0; i <n; i++) {
ar[i + 1] += ar[i];
}
cout<<ar[100]<<endl;
return 0;
}
把ar和sum 的每个值列出来:
不难发现 ar 和 sum 重复出现,那么我们可以把求和步骤放到第一次循环里,把 ar 直接去掉,有:
#include<iostream>
using namespace std;
int main() {
int n = 100, sum = 0, p = 0;
for (int i = 1; i <= n; i++) {
p += i;
sum += p;
}
cout << sum << endl;
return 0;
}