问题描述
求1+2+3+…+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+…+n的值
样例输入
4
样例输出
10
样例输入
100
样例输出
5050
数据规模与约定
1 <= n <= 1,000,000,000。
入门训练就比较简单,但是我但是写第一次没有得满分,得了50分,还是得仔细一点的
而且这个题给我们一个数然后让我们计算从1加到n的数,数学比较好的就知道
从1加到n是有一个公式的,((1+n)*n)/2
第一次代码如下:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);//输入值 Integer n=sc.nextInt();//输入值并且赋给n System.out.println((1+n)*n/2);//直接进行运算,然后在输出 } }
当时也没有怎么想就写了然后是50分,一看测试数据可能是因为我们的Integer不能从下从1到n的那么多数,会超出Integer的最大值值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。所以最后改为了Long保持 long 类型的最大值的常量,该值为
2^63-1。
代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s1 = new Scanner(System.in);//输入值 while (s1.hasNext()) {//可以进行反复输入的,但是基本上没啥用,看着好看,肯定是上一个运行完,才可以输入下一个 Long sum;//定义一个long 型的sum Long n = s1.nextLong();//输入值并且赋给n sum = (long) ((1 + n) * n / 2);//进行计算并给sum System.out.println(sum);//打印sum } s1.close();//关闭我们打开的,一个好习惯 } }