- 编写一个程序,由键盘输入n的值,求s=1+(1+4)+(1+4+7)+...+(1+4+7+...+n)的值
(透过现象看本质)分析与求3!+5!+7!+9!相同
1+4--s=s+4
1+4+7----s=s+7
1+4+7+10-----s=s+10
假设:
int s=0;//最终结果
int r=0;//保存每个括号里面的和
for(int i=1;i<=n;i+=3){
r+=i;
s+=r;
}
n=12,11
if((n-1)%3!=0){
s += r+n;
}
如n=4、n=7;n=12
i r s n
1 0 0
1 1
4 5 6
7 12 18
11 23 41
代码如下:
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入数值n:");
int n = s.nextInt();
int s=0;
int sum = 0;
for(int i=1;i<=n;i+=3){
sum +=i;
s+=sum;
}
if((n-1)%3!=0){
s = s+sum+n;
}
System.out.println(s);
}