问题描述
求 1(含)至 20230408(含)中每个数的和。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路
考察如何存大数,用long和BigInteger都可以。
AC代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
System.out.println("204634714038436");
/*
//存大数方法一
long i=0,all=0;
for(i=1;i<=20230408;i++) {
all+=i;
}
System.out.println(all);
//存大数方法二
BigInteger num=new BigInteger("0");
for(i=1;i<=20230408;i++) {
num=num.add(BigInteger.valueOf(i));
}
System.out.println(all);
*/
}
}
相关知识
String获取每一个字符:charAt(),返回的是字符;
将字符转换为整数:Character.getNumericValue(char);
java中的long对应c的long long;
BigInteger:BigInteger
是Java中的一个类,用于表示任意精度的整数。它没有固定的大小限制,可以存储任何大小的整数。
//创建 BigInteger 对象来存储大整数值
BigInteger bigInt = new BigInteger("1234567890123456789012345678901234567890");
//加法
BigInteger num1 = new BigInteger("12345");
BigInteger num2 = new BigInteger("67890");
BigInteger sum = num1.add(num2);
//减法
BigInteger num1 = new BigInteger("100");
BigInteger num2 = new BigInteger("50");
BigInteger difference = num1.subtract(num2);
//乘法
BigInteger num1 = new BigInteger("123");
BigInteger num2 = new BigInteger("456");
BigInteger product = num1.multiply(num2);
//除法
BigInteger dividend = new BigInteger("1000");
BigInteger divisor = new BigInteger("20");
BigInteger quotient = dividend.divide(divisor);
//将结果赋给自身
BigInteger num = new BigInteger("12345");
num = num.add(new BigInteger("67890"));
//错误示范
//不能直接将一个 int 值直接传递给 BigInteger 的构造函数,
//因为 BigInteger 的构造函数需要接受一个字符串或另一个 BigInteger 对象。
int a=1;
BigInteger num=new BigInteger(a);
//将 int 值转换为字符串,然后将字符串传递给 BigInteger 构造函数
int a = 1;
BigInteger num = new BigInteger(Integer.toString(a));
//使用 BigInteger 的静态方法 valueOf 来将 int 转换为 BigInteger
int a = 1;
BigInteger num = BigInteger.valueOf(a);
(by 归忆)