快速幂的思想:
运用倍增的思想将所要成的幂转化为2的n次方的形式对应上二进制位进行快速计算。
代码:
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
int qmi(int a,int b,int k){
int res=1;
while(b){
//如果在对应二进制位上有数才计算
if(b&1)res=(ll)res*a%k;
//从小到大对所要乘的幂进行倍增
a=(ll)a*a%k;
//枚举每一位二进制
b=b>>1;
}
return res;
}
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d^%d mod %d=%d",a,b,c,qmi(a,b,c));
return 0;
}