```cpp
#include <iostream>
#include <cstdio>
#include <map>
#include <cmath>
#define int long long
using namespace std;
int a,b,c,p;
map <int,int> Map;
signed main()
{
scanf("%lld %lld %lld",&p,&b,&c);
b%=p;c%=p;
int t=sqrt(p),sum=c;
for (int i=0;i<=t;i++) {
Map[sum%p]=i+1,sum*=b,sum%=p;
}
int ll=b;
for (int i=1;i<t;i++) {
b*=ll,b%=p;
}
//cout<<b<<"\n";
sum=1;
for (int i=0;i<=t;i++) {
int sum1=sum;
int j=Map[sum1]-1;
sum*=b;sum%=p;
if (!Map[sum1]) continue;
cout<<i*t-j<<"\n";
return 0;
//cout<<sum<<"\n";
}
cout<<"no solution\n";
return 0;
}
```
这份代码会被 `5 2 3` hack
by 方123456 @ 2022-09-24 21:45:33
@[方123456](/user/128754) 更加离谱的是,步长写成 `sqrt(n)` 而不是 `sqrt(p)` 可以过。
by xx3333333333333 @ 2022-09-24 22:27:02