首
先
,
引
入
问
题
。
求
a
b
%
c
的
值
。
首先,引入问题。求a^b\%c的值。
首先,引入问题。求ab%c的值。
其中
a=72356825451438,
b=53727354327038,
c=27335634901889
首先。a的b次方是一个非常大的值。BigInteger类也不能储存。
所以使用快速幂的方法。连同BigInteger.每次乘方的结果都要模c。并且BigInteger的使用也是值得注意的。
public class SolutionD {
public static void main(String[] args) {
BigInteger a=new BigInteger("72356825451438");
BigInteger b=new BigInteger("53727354327038");
BigInteger c=new BigInteger("27335634901889");
System.out.println(pow(a,b,c));
}
private static BigInteger pow(BigInteger a, BigInteger b, BigInteger c) {
BigInteger ans=new BigInteger("1");
BigInteger one=new BigInteger("1");
BigInteger two=new BigInteger("2");
while (!b.equals(BigInteger.ZERO)){
if(b.mod(two).equals(one)){
ans=ans.multiply(a).remainder(c);
}
a=a.multiply(a).remainder(c);
b=b.divide(two);
}
return ans;
}
}
注,本人将BigInteger换成了long类型进行测试。发现不对,可能是long类型的计算错误。