萌新按照自己的理解打了一下,复杂度应该是logn但是不知道为啥后面4个超时了,求大佬帮帮看看是哪里出了问题orz
#include<iostream>
#include<cmath>
using namespace std;
long long ans=1;
long long f(long long a, long long b,long long k)
{
if (b == 1)
return a%k;
if (b % 2 == 0)
return (f(a, b / 2, k) * f(a, b / 2, k))%k;
else
return (a * f(a, b / 2,k) * f(a, b / 2,k))%k;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
long long a, b,k;
cin >> a >> b>>k;
cout << a<<"^"<<b<<" mod "<<k<<"="<< f(a, b,k) % k;
return 0;
}