比如n=3
an=sn=123=6
n=4
an有两个值,a3和a4
a3=123
a4=123+234=30
sn=a3+a4
n=5
an有3个
a3=!23
a4=!23+234
a5=!23+234+345
sn=a3+a4+a5
所以根据题目,图二是正确的代码
是读题的思路问题
图2我们认为an=sn
而根据图3,我们认为sn为n-2个an的总和
所以第一层i循环是n-2项
第二层j循环是an,每一个an有j-2项
比如n=5
i=3;i<=5;i++
总共3项
j=3;j<=5-i+3;j++
当i=3时
j=3;j<=5;j++
an=0+321
sn=0+an
an=0
j=4;
an=0+432
sn=an+sn=432+321
an=0
j=5
an=543
sn=an+sn=543+432+321
也就是i=3的时候计算的是
a5=543+432+321
当i=4
j=3;j<=4;j++
an=0+321
sn=0+an
an=0
j=4;
an=0+432
sn=an+sn=432+321
an=0
也就是i=4的时候计算的是
a4=432+321
i=5时
j=3;j<=3;j++
an=0+321
sn=0+an
an=0
也就是i=5的时候计算的是
a3=321
而sn=s5=a3+a4+a5
OK,有点绕,大概就是这么个意思,或许自己写代码更容易理解吧
修改如下,供参考:
#include <stdio.h>
int main()
{
long long int Sn = 0;
int n, i;
scanf("%d", &n);
for (i = 1; i <= n; i++)
Sn += (i - 2) * (i - 1) * i;
printf("%lld", Sn);
return 0;
}