求1+2+3+...+n的值。
由于 n的范围为 1<n<1000000000
所以对于一般的循环和int整型 有一定的要求
开始做是像第一个求数列那样
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
long n;
n=sc.nextLong();
long re[]=new long[(int) (n+1)];
re[1]=1;
if(n==1){
System.out.println(re[1]);
}
if(n>1){
for(int i=2;i<=n;i++){
re[i]=re[i-1]+i;}
System.out.println(re[(int) n]);
}
}
}
在n适中的时候输出是正确的但是 当n=1000000000 的时候 就显示越界
于是我看了网站上给出的锦囊 它是利用公式1+2+3+...+n=(1+n)*n/2来计算 让我很是吃惊,这我都想不到=。=
但是当n=1000000000 的时候还是越界,我猜是n 这个不能表示1000000000 这个数
忽然我发现在这个公式中 我为什么要将n分为1和n>1 ?
完全没必要啊
而且这个数组创建的多此一举 -。- 实在是太蠢了。
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
long n;
long s;
n=sc.nextLong();
s=(1+n)*n/2;
System.out.println(s);
}
}
于是最后就变成了这样,比之前好太多了!!!