a的b次方的最快的方法, 时间复杂度最小
#include<iostream>
using namespace std;
int ksm(int a,int b,int p){
int ans=1;
while(b>0){
if(b&1){
ans=ans%p*a%p;//%要把大数化小
}
b>>=1;//位运算,相当于除以2,但是比除以二要快
a=a*a%p;
}
return ans;
}
int main(){
int a,b,p;
cin>>a>>b>>p;
int result=ksm(a,b,p);
cout<<result;
}
// (a+b) % c = ( a%c + b%c ) %c
// (a*b) % c = ( a%c * b%c ) %c