func_code_string: #include <bits/stdc++.h>   using namespace std;   long long power(long long x, long long y, long long m) {     if (y == 0) return 1;     long long p = power(x, y / 2, m) % m;     p = (p * p) % m;     return (y % 2 == 0) ? p : (x * p) % m;   }   long long gcd(long long a, long long b) {     if (a == 0) return b;     return gcd(b % a, a);   }   long long modInverse(long long a, long long m) {     long long g = gcd(a, m);     if (g != 1)       return -1;     else       return power(a, m - 2, m);   }   int main() {     long long a, b, p, x;     cin >> a >> b >> p >> x;     long long pow = 1;     long long cnt(0);     for (long long j = 1; j < p; ++j) {       pow = (pow * a) % p;       long long invPow = modInverse(pow, p);       if (invPow == -1) continue;       long long y = (b * invPow) % p;       long long mn, d;       mn = ((j - y + p) % p) * (p - 1) + j;       if (mn > x) continue;       cnt += (x - mn) / (p * (p - 1)) + 1;     }     cout << cnt;   }   