蓝桥杯 入门训练 序列求和 (Java)

问题描述

求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();//关闭我们打开的,一个好习惯
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值