头文件
import java.math.*;
import java.util.*;
import java.io.*;
输入输出
static Scanner cin = new Scanner(System.in);
static PrintWriter cout = new PrintWriter(System.out, true);
数组
static BigInteger a[] = new BigInteger [1005];
主体
public class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in); // 输入必备句
}
}
与c/c++进行对比:
while(n-->0) // 等价 while(n--) n减到0
EOF:用法
普通的数: while(cin.hasNextInt()) //等同于!=EOF,第一数一定要输入整形的
大数的一般是:while(cin.hasNextBigInteger()) //第一个数一定要输入大数
System.out.print(m.toString()); // m.toString() 将m转为String 类
用法
运算类
//d为int型,a,b,c都为大数
c = a.add(b); // 相加
c = a.subtract(b); // 相减
c = a.multiply(b); // 相乘
c = a.divide(b); // 相除取整
c = a.gcd(b); // 最大公约数
c = a.remainder(b); // 取余
c = a.mod(b); // a mod b
c = a.abs(); // a的绝对值
c = a.negate(); // a的相反数
c = a.pow(d); // a的d次幂 d为int型
c = a.max(b); // 取a,b中较大的
c = a.min(b); // 取a,b中较小的
d = a.compareTo(b); // 比较a与b的大小 d=-1小于 d=0等于 d=1大于 d为int型
a.equals(b); // 判断a与b是否相等 相等返回true 不相等返回false
类型转换类
d = a.intValue(); // 将大数a转换为 int 类型赋值给 d
e = a.longValue(); // 将大数a转换为 long 类型赋值给 e
f = a.floatValue(); // 将大数a转换为 float 类型赋值给 f
g = a.doubleValue(); // 将大数a转换为 double 类型赋值给 g
s = a.toString(); // 将大数a转换为 String 类型赋值给 s
<span style = "color:#ff0000;"> s = a.toPlainString(); //将大数a转换为String类型赋值给s,且不表示为科学计数法</span>
a = BigInteger.valueOf(e); // 将 e 以大数形式赋值给大数 a e只能为long或int
a = newBigInteger(s, d); // 将s数字字符串以d进制赋值给大数a如果d=s字符数字的进制则等同于将数字字符串以大数形式赋值给大数a
进制转换类
String st = Integer.toString(num, base); //把int型num当10进制的数转成base进制数存入st中 (base <= 35).
int num = Integer.parseInt(st, base); //把st当做base进制,转成10进制的int
(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).
BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制.
BigInteger a; int b; String c;
a = cin.nextBigInteger(b); //以b进制读入一个大数赋值给a
c = a.toString(b); // 将大数a以b进制的方式赋给字符串c
a = newBigInteger(c, b); //把c 当做“b进制“转为十进制大数赋值给a