既然是大数,那么就要用字符串来存储:
import java.util.Scanner;
Scanner in = new Scanner(System.in);
String u = in.next(); //输入两个字符串
String v = in.next();
基本声明
import java.math.BigDecimal; //声明一个浮点数大数类
import java.math.BigInteger; //声明一个整型大数类
BigDecimal a = new BigDecimal(1); //定义一个大数a,并赋值1
BigInteger a = in.nextBigInteger();// 定义并输入a
BigDecimal a[]; //定义一个大数数组
while(in.hasNext()) { //多组输入
;
}
if(c.compareTo(BigDecimal.ZERO) == 0) //去除后到0
System.out.println("0");
else
System.out.println(c.stripTrailingZeros().toPlainString());
或者直接定义:
String a = "12345678";
String b = "23456788888";
将字符串转化成大数类型
java.math.BigInteger a2 = new java.math.BigInteger(a);
java.math.BigInteger b2 = new java.math.BigInteger(b);
加法 a+b:
java.math.BigInteger a3=a2.add(b2);
减法 a-b:
java.math.BigInteger a3=a2.subtract(b2);
乘法 a*b:
java.math.BigInteger a3=a2.multiply(b2);
除法:a/b:
java.math.BigInteger a3=a2.divide(b2);
取模 a%b
java.math.BigInteger a3=a2.mod(b2);
幂运算 a^b (b为int型)
java.math.BigInteger a3=a2.pow(b);
返回最大值:
java.math.BigInteger a3=a2.max(b2);
左移n位 (n位int型,如果位负数相当于右移)
java.math.BigInteger a3=a2.shiftLeft(n);
右移n位 同理:
java.math.BigInteger a3=a2.shiftRight(n);
比较大小:(返回值为int型 1 , 0,-1)
int a3 = a2.compareTo(b2);
类型转换:
int b3 = a3.intValue();
大数比较
import java.math.*;
import java.util.*;
public class Main {
public static void main(String []args){
Scanner cin = new Scanner (System.in);
BigInteger a,b,c,d;
a=cin.nextBigInteger();
b=cin.nextBigInteger();
c=cin.nextBigInteger();
d=cin.nextBigInteger();
if(a.compareTo(b)<0)//此时由于a<b,则返回值小于0;
{
System.out.println("a<b");
}
if(b.equals(c))//此时由于b==c,则返回值等于0;
{
System.out.println("b==c");
}
if(d.compareTo(c)>0)//此时由于d>c,则返回值大于0;
{
System.out.println("d>c");
}
}
}