func_code_string: #include <bits/stdc++.h>   using namespace std;   char N[(int)1e6 + 5], B[(int)1e6 + 5];   long long n, b, c;   inline long long euler(long long n) {     long long ans = n;     for (int i = 2; i * i <= n; i++) {       if (n % i == 0) {         ans = ans / i * (i - 1);         while (n % i == 0) n /= i;       }     }     if (n > 1) ans = ans / n * (n - 1);     return ans;   }   long long qpow(long long x, long long n, long long mod) {     if (n == 0) return 1;     long long ans = qpow(x, n >> 1, mod);     ans = ans * ans % mod;     if (n & 1) ans = ans * x % mod;     return ans % mod;   }   int main() {     cin >> B;     cin >> N;     int xx = strlen(N);     int yy = strlen(B);     cin >> c;     n = 0;     long long u = euler(c);     if (xx < 10) {       for (int i = 0; i < xx; i++) n = n * 10 + N[i] -  0 ;       n--;     } else {       for (int i = 0; i < xx; i++) {         n = n * 10 + N[i] -  0 ;         n = n % u;       }       n = ((n - 1) + u) % u;       n += u;     }     for (int i = 0; i < yy; i++) {       b = b * 10 + B[i] -  0 ;       b = b % c;     }     long long ans = (b - 1 + c) % c;     ans = ans * qpow(b, n, c) % c;     if (!ans)       cout << c << endl;     else       cout << ans << endl;     return 0;   }   