洛谷p1226
基于分治思想
#include<bits/stdc++.h>
using namespace std;
#define int long long
int ksm(int a,int b,int p){
if(b==1) return a%p;
if(b==2) return ((a%p)*(a%p))%p;
if(b%2==1) return (a*ksm(a,b-1,p))%p;
int t=ksm(a,b/2,p);//注意此处若调用两次ksm函数,实际复杂度为O(n)
return (t*t)%p;
}
signed main(){
int a,b,p;
cin>>a>>b>>p;
cout<<a<<"^"<<b<<" mod "<<p<<"=";
cout<<ksm(a,b,p);
}