用C语言编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)

急需啊

第1个回答  2018-02-20
#include<stdio.h>
#include<math.h>
int main(){
int n,t,i;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&n);
printf("%d\n",n*(n+1)*(n+2)/6);
}

}
S=1+(1+2)+(1+2+3)+......+(1+2+3+......+n)
=1*(1+1)/2+2*(1+2)/2+3*(1+3)/2+......+n*(1+n)/2
=1/2*{(1平方+2平方+3平方+...+n平方)+(1+2+3+...+n)}
这里用到等差数列前n项和公式n(n+1)/2,还用前n项平方和公式1平方+2平方+3平方+...+n平方=n(n+1)(2n+1)/6
所以 1/2*{(1平方+2平方+3平方+...+n平方)+(1+2+3+...+n)}可以化简为 1/2*{n(n+1)(2n+1)/6+n(n+1)/2}
提取公因式并通分之后可得最简式 n*(n+1)*(n+2)/6。