第X节 JAVA大数
由于近些年,大数据的兴起,在ACM比赛中,经常会出现大数的问题。
大数,字面意思很简单。而在编程中,特指超过32位二进制的数。虽然低于64位的数据计算可以使用long long 的数据类型,但是如果出现乘法,则难免会越界。这样的问题,我们称为大数问题。
虽然C++给我们提供了大数,但是使用起来不是很方便。特别是在处理乘法和除法的时候,代码可能会达到上百行。JAVA的大数类则比较实用,在ACM竞赛中,我们大多使用JAVA语言进行大数题目的计算。下面是JAVA大数加法的程序:1
2
3
4
5
6
7
8
9
10
11
12
13import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main (String args[]) {
Scanner in = new Scanner(System.in);
while(in.hasNextBigInteger()) {
BigInteger a = in.nextBigInteger();
BigInteger b = in.nextBigInteger();
System.out.println(b.add(a));
}
in.close();
}
}
需要特别注意的是,普通的四则运算符号在大数加减时不能使用,我们要使用类似于C++中运算符重载的方法来进行计算。常用的几种运算如下:
add( ) 加法
subtract( ) 减法
multiply( ) 乘法
divide( ) 除法
remainder ( ) 求余
abs( ) 绝对值
pow( int n ) n次幂
不仅如此,大数只能和大数进行运算。在需要使用常数的时候,我们需要用下面这种方法进行定义:1
BigInteger a = new BigInteger ( “XXXXXXX” );
练习: