O(logn):
#include<bits/stdc++.h>
using namespace std;
int pow_mod(int a, int n, int m)
{
if(n == 0) return 1;
int x = pow_mod(a, n/2, m);
long long ans = (long long)x * x % m;
if(n % 2 == 1) ans = ans *a % m;
return (int)ans;
}
int main()
{
int a, n, m;
cin >> a >> n >> m;
cout << pow_mod(a, n, m);
}
#include<bits/stdc++.h>
using namespace std;
int pow_mod(int a, int n, int m)
{
long long ans = 1;
while(n){
if(n&1){
ans = (ans * a) % m;
}
a = (a * a) % m;
n >>= 1;
}
return ans;
}
int main()
{
int a, n, m;
cin >> a >> n >> m;
cout << pow_mod(a, n, m);
}