func_code_string: #include <bits/stdc++.h>   using namespace std;   long long bin_pow(long long x, long long e, long long MOD) {     long long res = 1;     while (e) {       if (e & 1) res = res * x % MOD;       e >>= 1;       x = x * x % MOD;     }     return res;   }   long long p, a, b, x, ans;   vector<long long> m[1123456];   long long xd[1123456];   long long xy[1123456];   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cin >> a >> b >> p >> x;     for (int i = 1; i < p; i++) {       xd[i] = bin_pow(i, p - 2, p);       xy[i] = bin_pow(a, i, p);     }     for (int i = 0; i < p - 1; i++) {       m[bin_pow(a, i, p)].push_back(i);     }     for (int i = 1; i < p; i++) {       vector<long long> g = m[((b * xd[i]) % p) * xd[xy[i]] % p];       for (auto k : g) {         long long y = x - i;         if (y < 0) continue;         y /= p;         long long t = y / (p - 1);         if (t * (p - 1) + k <= y)           ans += t + 1;         else           ans += t;       }     }     cout << ans;     return 0;   }   