大数的相关操作
创建大数
BigInteger a=new BigInteger("123456");//参数一定要是字符串
BigInteger a=BigInteger.valueOf(123);//参数可以是int或long,不能是小数
大数赋值
BigInteger a=in.nextBigInteger();
大数运算
a.add(b);//加
a.subtract(b);//减
a.divide(b);//除
a.multiply(b);//乘
大数比较
a.equals(b);//如果a、b相等返回true否则返回false
a.compareTo(b);//a小于b返回-1,等于返回0,大于返回1
常用方法(返回值也是大整型)
a.mod(b);//求余,除数不能是负数。无论被除数是不是正数,结果都是正数
a.remainder(b);//求余,除数可以负数。两个操作数只要有一个是负数,结果即为负数
a.gcd(b);//求最大公约数
a.max(b);//求最大值
a.min(b);//求最小值
BigInteger中的常数
BigInteger.ZERO//大整数0
BigInteger.ONE//大整数1
BigInteger.TEN//大整数10
例题学习(杭电1002):
代码实现:
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int t=1;
while(n-->0){
BigInteger a = sc.nextBigInteger();
BigInteger b = sc.nextBigInteger();
BigInteger c = a.add(b);
System.out.println("Case "+t+":");
System.out.println(a+" + "+b+" = "+c);
if(n!=0) {
System.out.println();
}
t++;
}
}
}
例题学习(杭电1042):
代码实现:
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n =sc.nextInt();
BigInteger sum=BigInteger.ONE;
for (int i = 1; i <=n ; i++) {
sum=(sum.multiply(BigInteger.valueOf(i)));
}
System.out.println(sum);
}
}
}