煤球数目:
有一堆煤球,
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
有一堆煤球,
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
1,首先想到的当然是两重循环:
#include<stdio.h>
int main(void)
{
int tum,sum=0;
int i,j;
for(i=1;i<=100;i++){
tum=0;
for(j=1;j<=i;j++){
tum+=j;
}
sum+=tum;
}
printf("%d",sum);
return 0;
}
#include<stdio.h>
int main()
{
int a[101] ={0};
int sum = 0;
for(int i = 1 ; i <=100 ; i ++)
a[i] = a[i-1] + i;
for(int j = 1 ; j <=100 ; j ++)
sum += a[j];
printf("%d\n",sum);
return 0;
}
3,回到宿舍和舍友说起来这题,舍友说可不可以用一个循环去实现,于是想想就出来了以下代码:
#include<stdio.h>
int main(void)
{
int a[101]={0};
int sum=0;
int i;
for(i=1;i<101;i++){
a[i]=a[i-1]+i;
sum+=a[i];
}
printf("%d",sum);
return 0;
}
第三种方法比前两种时间快了一倍。数据小了看不出来,大的话非常明显。
看来还是要多想多思考。