洛谷AT_atc002_b n^p%m
有什么问题,WA啦!
#include<bits/stdc++.h>
using namespace std;
map<long long,bool>v;
map<long long,long long>ans;
long long dfs(long long n,long long p,long long m)
{
if(v[p])
{
return ans[p];
}
if(p==1)
{
ans[p]= n%m;
}
else
{
ans[p]=((dfs(n,p/2,m)%m)*(dfs(n,p-p/2,m)%m))%m;
}
v[p]=true;
return ans[p];
}
int main()
{
long long n,p,m;
cin>>n>>m>>p;
cout<<dfs(n,p,m);
return 0;
}