- 定位:2016年第七届蓝桥杯省赛C/C++ B组试题A
- 原题:煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
…
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 - 属性:数列求和
- 难度:破壳
- 独白:
千万不要太紧张就看错了,这里是求共有多少个煤球,不是问第100层有多少个煤球!!!
首先我们根据题目描述进行模拟:
a1=1;
a2-a1=2;
a3-a2=3;
a4-a3=4;
。。。
a100-a99=100;
将他们全加起来就等于a100=1+2+3+4+…+100=100x(1+100)/2;
于是通过观察我们得到通项an=n*(1+n)/2;
其实就是高一学的数列知识。。。
因为sum=a1+…+a100;数据量还挺大,自己一个一个算也浪费时间,所以把它放计算机上跑一跑就出来了,也就是将通项公式放进去就OK了。(171700) - 代码:
#include<iostream>
using namespace std;
int sum;
int main(){
for(int i=1;i<=100;i++){
sum+=(i*(i+1))/2;
}
cout<<sum;
return 0;
}
- 总结:数学与程序结合,达到最高效即数程结合。
- 感悟:起伏的日子里要学会放一颗平稳的心。
- 归档:已归档。