快速幂
主要思想:通过将指数化为二进制的形式,每一次将指数部分缩小一半,让底数相乘,这样相乘的次数就会每次缩小一般。
当二进制数的位数为0时不用相乘,可以跳过,因为任何数的0次幂都是1,每次将底数开平方。
# include<stdio.h>
int a,b,p;
int quick_mi(int a,int b,int p){
int ans = 1;
while(b){
if(b&1){
ans = ans*b%p;
}
b<<=1;
b = b*b%p;
}
return ans;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
scanf("%d %d %d",&a,&b,&p);
printf("%d\n",quick_mi(a,b,p));
}
}