数论!你【电报】
博弈论
/+0+/ 不会
期望问题
/+/+/ 不会
\color{red}\huge 正片开始
BSGS
signed main(){
cin>>p>>a>>b;
t=sqrt(p);at=qm(a,t);l=b%p;
for(int j=0;j<t;j++){
mp[l]=j+1;
l=(l*a)%p;
}
l=1;
for(int i=0;i<=t;i++){
o=mp[l];
if(o)
if(i*t-o+1>=0)
ans=min(ans,i*t-o+1);
l=(l*at)%p;
}
return 0;
}
exBSGS
int exBSGS(int aa,int bb,int pp){
for(;;){
d=__gcd(aa,pp);
if(d==1){break;}
if(bb%d){return -1;}
cnt++;bb/=d;pp/=d;
ad=(ad*aa/d)%pp;
if(ad==bb){return cnt;}
}
return BSGS(aa,bb,pp,ad)+cnt;
}
//返回值<0代表无解,在main函数中需要特判