基础算法练习200题15、整数累加

简介: 基础算法练习200题15、整数累加

题目:


输入一个数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}的通项公式,应注意对其含义的理解。常见的方法有公式法、错位相减法、倒序相加法、分组法、裂项法、数学归纳法、通项化归、并项求和。数列是高中代数的重要内容,又是学习高等数学的基础。在高考和各种数学竞赛中都占有重要的地位。数列求和是数列的重要内容之一,除了等差数列和等比数列有求和公式外,大部分数列的求和都需要有一定的技巧。

image.png



(首项+末项)×项数/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&nbsp;红目香薰&nbsp;付文龙&nbsp;老师付&nbsp;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&nbsp;红目香薰&nbsp;付文龙&nbsp;老师付&nbsp;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")));
  }
}

无限长度~~

image.png

相关文章
|
3月前
|
自然语言处理 Rust 算法
【算法】13. 罗马数字转整数(多语言实现)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 | 字符 | 数值 | |--|--| | I | 1 | | V | 5 | | X | 10 | | L | 50 | | C | 100 | | D | 500 | | M | 1000 | 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1
【算法】13. 罗马数字转整数(多语言实现)
|
3月前
|
算法 测试技术 C#
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数
|
3月前
|
算法 Java C++
试题 算法训练 整数拆分
试题 算法训练 整数拆分
37 0
|
3月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
43 0
|
1月前
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
25 0
【算法】二分查找(整数二分和浮点数二分)
|
2月前
|
SQL 算法 数据挖掘
深入探索力扣第12题:整数转罗马数字的算法之旅
深入探索力扣第12题:整数转罗马数字的算法之旅
|
3月前
|
算法 C语言
【C语言】求最小新整数(贪心算法)
【C语言】求最小新整数(贪心算法)
33 1
|
3月前
|
算法
简记二分算法模板与代码案例:整数二分和浮点数二分
本文介绍了两种算法模板,分别是整数二分和浮点数二分。
28 0
|
3月前
|
算法 测试技术 C++
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
|
3月前
|
算法 测试技术 C++
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数

热门文章

最新文章