#include #include #include using namespace std; int discrete_log (int a, int v, int m) { int phi_m = m - 1; int lim = int (sqrt (phi_m)) + 1; map power; int a_lim = 1; for (int i = 0; i < lim; i++) { power[a_lim] = i; a_lim = (a_lim * 1LL * a) % m; } for (int i = 0; i < lim; i++) { if (power.count (v)) return (power[v] - i * lim + phi_m) % phi_m; v = (v * 1LL * a_lim) % m; } return -1; } int main () { int a, v, m; while (cin >> a >> v >> m) cout << discrete_log (a, v, m) << endl; return 0; }