1、求 a 的 b 次方对 p 取模的值 ,其中 1 a,b,p
根据数学常识,每一个整数可以唯一表示为若干指数不重复的2的次幂的和。也就是说,如果b 在二进制表示下有k位,其中第i位的数字为(), 那么有 于是
又因为 , 因此我们很容易通过k次递推求出每个成绩项,当 =1 的时候将该成绩项累积到答案中去,代码如下:
public class BitOperation1 {
public static void main(String[] args) {
int res = bitoperation(2, 3, 5);
System.out.println(res);
}
public static int bitoperation(long a, long b, long p){
long ans = 1;
while(b > 0){
if((b & 1) == 1) ans = ans * a % p;
a = a * a % p;
b = b >> 1;
}
return (int)ans;
}
}