开了long long
#include <bits/stdc++.h>
using namespace std;
long long a,n,k;
long long f(long long x,long long y)
{
if(x==1&&y==0)
return a*a%k;
if(x==1&&y==1)
return a*a*a%k;
else{
long long s=f(x/2,x%2)%k;
long long s1=pow(s,2);
if(y==1)
return (s1%k)*(a%k)%k;
else return s1%k;
}
}
int main()
{
cin>>a>>n>>k;
cout<<a<<"^"<<n<<" mod "<<k<<"=";
a%=k;
cout<<f(n/2,n%2);
}
后两个点错了
输入
156431 154941233 467107951
输出
156431^154941233 mod 467107951=216052475