转载:https://blog.csdn.net/clove_unique/article/details/50740412
引入
BSGS算法,原名Baby Steps Giant Steps,又名大小步算法,拔山盖世算法,北上广深算法——by SLYZoier,数论基本算法之一。
问题

题解

讨论

模板:(map版本)
ll bsgs(ll a,ll b,ll p)//求解x,a^x%p=b%p
{
ll m=sqrt(p)+1; //x=i*m-j
map<ll,ll>M;
ll res=1; //a^0
for(int j=0;j<=m;j++)
{
M[b*res%p]=j;
res=res*a%p;
}
for(int i=1;i<=m;i++)
{
ll k=qpow(a,i*m,p);
if(M.count(k))
return i*m-M[k];
}
}
本文介绍了BSGS算法(BabyStepsGiantSteps),一种重要的数论基本算法。该算法用于解决特定形式的离散对数问题,提供了求解a^x%p=b%p中未知数x的方法。文章还提供了一个使用map实现的算法模板。

1万+

被折叠的 条评论
为什么被折叠?



