关于数据

P3846 [TJOI2007] 可爱的质数/【模板】BSGS

```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


|