本题是信奥一本通的题。
原理可以去看http://t.csdn.cn/nOTp4
这里给出一个AC代码。
//1326:【例7.5】 取余运算(mod)
#include<bits/stdc++.h>
#define MAXN 101
using namespace std;
long b1,k,p;
long f(int p)
{
if(p==1)
return b1%k;
else{
if(p%2==0)
return f(p/2)*f(p/2)%k;
else if(p%2==1)
return f(p/2+1)*f(p/2)%k;
}
}
int main() {
int b;
// b=2,p=10,k=9;
cin>>b>>p>>k;
b1=b%k;
cout<<b<<"^"<<p<<" mod "<<k<<"="<<f(p)<<endl;
return 0;
}