高精度快速幂(Java版)

 import java.io.*;
import java.math.*;
import java.util.*;
import java.text.*; public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
BigInteger a, b, m, ans;
while (cin.hasNext()) {
ans = new BigInteger("1");
a = cin.nextBigInteger();
b = cin.nextBigInteger();
m = cin.nextBigInteger();
a = a.mod(m);
while (b.compareTo(new BigInteger("0")) > 0) {
if (b.mod(BigInteger.valueOf(2)).compareTo(BigInteger.ONE) == 0) // if(n%2==1)
ans = ans.multiply(a).mod(m); // sq=(sq*p)%m;
a = a.multiply(a).mod(m); // p=(p*p)%m;
b = b.divide(BigInteger.valueOf(2));
}
System.out.println(ans);
}
}
}
上一篇:Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)


下一篇:type=file 文件修改表单 名称不能正常回显的问题