原博:https://www.cnblogs.com/Leonard-/p/7636639.html
大数相加:
//JAVA 大数相加
import java.math.BigInteger;
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
BigInteger ans = a.add(b);
System.out.println(ans);
}
}
大数相乘:
大数相减:public BigInteger subtract(BigInteger val)
大数相除:public BigInteger divide(BigInteger val)
大数阶乘:
//JAVA 大数阶乘
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int n = cin.nextInt(); //输入int型
BigInteger ans = BigInteger.ONE;
for(int i = 1; i <= n; i++)
ans = ans.multiply(BigInteger.valueOf(i));
System.out.println(ans);
}
}
大数比较大小
//JAVA 大数比较大小
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO)) break;
int flag = a.compareTo(b);
if(flag == -1)
System.out.println("a<b");
else if(flag == 0)
System.out.println("a==b");
else
System.out.println("a>b");
}
}
}
高精度幂
//JAVA 高精度幂
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
BigDecimal ans = cin.nextBigDecimal();
int n = cin.nextInt();
String res = ans.pow(n).stripTrailingZeros().toPlainString(); //整数去掉后面的0和小数点
if(res.startsWith("0")) //去掉前导0
{
res = res.substring(1);
}
System.out.println(res);
}
}
}
//这里的BigDecimal相当于double,但是精度更高