方法一:设置两个求和变量subSum和allSUM,
subSUM用来存放每一小部分的和,如1+2+3;
allSUM用来存放所有数的和,如1+(1+2)+(1+2+3);
关键代码:
for(int i=1;i<=n;i++){
subSum=subSum+i;
allSum=allSum+subSum;
}
方法二:计算整个算式1+(1+2)+(1+2+3)+...+(1+2+...+n-2)+(1+2+..+n-2+n-1)+(1+2+..+n-2+n-1+n)中1,2,3,4...,n-2,n-1,这些数出现的次数;观察可以发现:
数字------出现次数
1---------n
2------- n-1
3--------n-2
...以此类推(找规律) 数字和个数的和为n+1
n-2------3
n-1------2
n -------1
整个算式求和就可以表示成1n+2(n-1)+3*(n-2)4(n-3)+...+(n-2)*3+(n-1)2+n1
关键代码:
for (int i = 1; i <= n; i++) {
#变量i对应着数字,(n+1-i)对应着数字i出现的次数
sum = sum + i * (n + 1 - i);
}
共 1 条回复
鲍老师真牛逼!!!