快速幂.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long binpow(long long a, long long b, long long m) {
a %= m;
long long res = 1;
while (b > 0) {
if (b & 1) res = res * a % m;
a = a * a % m;
b >>= 1;
}
return res;
}
int main(int argc, char const *argv[])
{
ll b, p, k;
cin >> b >> p >> k;
ll ans;
if (b==1&&p==0&&k==1)
{
cout<<"1^0 mod 1=0";
return 0;
}
ans = binpow(b, p, k);
cout << b << "^" << p << " " << "mod" << " " << k << "=" << ans;
return 0;
}