题目:
输入一个数n,计算从1~n所有整数的和。
输入样例:100
输出样例:5050
样例范围:1-10^9
暴力题解:
package com.item.action; import java.util.Scanner; /** * * @author hongmuxiangxun 红目香薰 付文龙 老师付 laoshifu * */ public class demo15 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int num = sc.nextInt(); sc.close(); long result=0; for (int i = 1; i <=num; i++) { result+=i; } System.out.println(result); } }
算法题解:
数列求和:
数列求和对按照一定规律排列的数进行求和。求Sn实质上是求{an}的通项公式,应注意对其含义的理解。常见的方法有公式法、错位相减法、倒序相加法、分组法、裂项法、数学归纳法、通项化归、并项求和。数列是高中代数的重要内容,又是学习高等数学的基础。在高考和各种数学竞赛中都占有重要的地位。数列求和是数列的重要内容之一,除了等差数列和等比数列有求和公式外,大部分数列的求和都需要有一定的技巧。
(首项+末项)×项数/2
举例:1+2+3+4+5+6+7+8+9+10=(1+10)×10/2=55
如下可看到:n(n+1)/2
package com.item.action; import java.util.Scanner; /** * * @author hongmuxiangxun 红目香薰 付文龙 老师付 laoshifu * */ public class demo15 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); long num = sc.nextLong(); sc.close(); System.out.println(num*(num+1)/2); } }
无限制题解:
BigDecimal
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
package com.item.action; import java.math.BigDecimal; import java.util.Scanner; /** * * @author hongmuxiangxun 红目香薰 付文龙 老师付 laoshifu * */ public class demo15 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); BigDecimal num = sc.nextBigDecimal(); sc.close(); System.out.println(num.multiply(num.add(BigDecimal.ONE)).divide(new BigDecimal("2"))); } }
无限长度~~