题目描述:
求 a 的 b 次方对 p 取模的值,其中 0≤a,b≤10^9 , 0<p≤10^9
输入格式
三个用空格隔开的整数a,b和p。
输出格式
一个整数,表示a^b mod p的值。
输入样例
2 3 9
输出样例
8
示例代码
import java.util.Scanner;
public class a的b次方modp {
public static long power(long a, int b, int p){
long ans = 1 % p;//处理a的0次
while (b != 0){
if ((b & 1) == 1){//判断该位是否为1,奇数个a
ans =(long)(ans * a % p);//亲测转换为long型
}
a = (long) (a * a % p);//b为0,偶数个a
b = b >> 1;
}
return ans;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int p=in.nextInt();
System.out.println(power(a,b,p));
}
}