1 #include <iostream> 2 #include <sstream> 3 #include <string> 4 #include <algorithm> 5 #include <vector> 6 using namespace std; 7 8 #define GI ({int _t; scanf("%d", &_t); _t;}) 9 #define FOR(i, a, b) for (int i=a; i<b; i++) 10 #define REP(i, a) FOR(i, 0, a) 11 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();} 12 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;} 13 #define DBG(x) cout << #x << "::" << x << endl; 14 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;} 15 16 int go(long long int b, long long int p, long long int m) { 17 //cout << b << "\t" << p << "\t" << m << endl; 18 if (p==0) { return (1%m); } 19 else if (p==1) { return (b%m); } 20 else if (p%2==0) { return (go((b%m*b%m)%m, p/2, m)); } 21 else { return (b*go(b, p-1, m))%m; } 22 } 23 24 int main() { 25 long long int b, p, m; 26 while (cin >> b >> p >> m) { 27 int res = go(b, p, m); 28 cout << res << endl; 29 } 30 return 0; 31 }