基本操作:
java的输入输出:

输入:

格式1:Scanner sc = new Scanner (new BufferedInputStream(System.in));
格式2:Scanner sc = new Scanner (System.in);
//在读入数据量大的情况下,格式1的速度会快些。

BigIntege n=input.nextBigInteger();
int n = sc.nextInt();      //scanf("%d", &n); 或 cin >> n; 
String s = sc.next();      // scanf("%s", s); 或 cin >> s; 
double t = sc.nextDouble();//scanf("%lf", &t); 或 cin >> t; 
String s = sc.nextLine();  //gets(s); 或 cin.getline(...); 

sc.hasNext()
sc.hasNextInt()
sc.hasNextDouble()
sc.hasNextLine()           //判断是否有下一个输入可以用

//在有多行数据输入的情况下,一般这样处理:
static Scanner in = new Scanner(System.in);
while(in.hasNextInt())  //!=EOF
{
}
while(in.hasNext())     //!=EOF
{
}

输出

System.out.print();   //不换行

System.out.println(); //输出换行

System.out.format();  //与scanf()类似

System.out.printf();  //与scanf()类似

大整数:

大整数:
常量:
BigInteger.ONE  1
BigInteger.TEN  10
BigInteger.ZERO 0

输入:
BigIntege n=input.nextBigInteger();
输出:
System.out.println("a="+a); //输出换行

方法:
c=a.add(b) 			//c=a+b;
c=a.subtract(b)     //c=a-b;
c=a.multiply(b)     //c=a*b;
c=a.divide(b)       //c=a/b;
BigInteger[]=ivideAndRemainder(BigInteger val) 返回(t/v)(t%v)的数组。
c=a.pow((int)b)     //c=a^b;
c=a.modPow(b, mod)  //c=a^b mod mod;
c=a.xor(b)          //c=a^b;
c=a.gcd(b)          //c=gcd(a, b);
c=a.mod(b)          //c=a mod b;
c=a.remainder(mod)  //c=a%mod %:有正负 mod:为正
c=a.negate()        //c=-a;
int=a.signum()      //返回a的正负号
c=a.abs()           //c=a的绝对值; 
int=a.compareTo(b)  //a, b比较
c=a.max(b)          //c=max(a, b);
c=a.min(b)          //c=min(a, b);

更多:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

快速幂:
```java
public BigInteger POW (BigInteger a,BigInteger b,BigInteger mod)//快速幂
{
    
    BigInteger ans = BigInteger.valueOf(1);          // 大数 1
    BigInteger TW=BigInteger.ONE.add(BigInteger.ONE);// 大数 2
    while(!b.equals(BigInteger.ZERO))                //如果b != 0 进入循环
    {
        if(b.remainder(TW).equals(BigInteger.ONE))   // 如果该位==1,则ans=ans*a;
            ans = (ans.multiply(a)).remainder(mod);
        b=b.divide(TW);                              // 为了下一步计算b二进制的下一位
        a = (a.multiply(a)).remainder(mod);          // a*a 相当于A * A 或者 A^2 * A^2 等等
    }
    return ans;
}