//大嘘解法。右結合の計算において、計算結果を計算結果(mod m)に置き換えていく。 //例:(3^3^3)(mod 10) = (3^((3^3)mod10)) = (3^7)(mod 10) = 7 #include #include #include #include #include #include #include #include #include #include #include #include #include #define int long long using namespace std; int a, n, m; int pwd[2001]; void Pwd(int a, int m) { int ret = 1; for(int i = 0; i <= m; i++ ) { pwd[i] = ret; ret *= a; ret %= m; } } signed main() { int i, j; cin >> a >> n >> m; Pwd(a, m); int jyo = 1; for( i = 0; i < n; i++ ) { jyo = pwd[jyo]; } cout << jyo << endl; return 0; }