数学数论BSGSOn this pageBSGS参考资料 BSGS - OI Wiki 简介 BSGS(Baby-Step Giant-Step,大步小步)在 gcd(a,p)=1\gcd(a,p)=1gcd(a,p)=1 时求解 ax≡b(modp)a^x\equiv b\pmod pax≡b(modp) 的最小非负整数 xxx。 设 m=⌈p⌉m=\lceil\sqrt p\rceilm=⌈p⌉,令 x=im−jx=im-jx=im−j(0≤i,j<m0\le i,j<m0≤i,j<m),则方程化为 aim≡b⋅aj(modp)a^{im}\equiv b\cdot a^{j}\pmod paim≡b⋅aj(modp)。先枚举 jjj 把 b⋅ajb\cdot a^jb⋅aj 存入哈希表(小步),再枚举 iii 计算 aima^{im}aim 查表(大步),时间复杂度 O(p)O(\sqrt p)O(p)。当 gcd(a,p)≠1\gcd(a,p)\ne 1gcd(a,p)=1 时用扩展 BSGS。 例题 Problemcode洛谷 P3846 【模板】BSGS / [TJOI2007] 可爱的质数给定质数 ppp 与整数 b,nb,nb,n,求最小的非负整数 lll,使 bl≡n(modp)b^l\equiv n\pmod pbl≡n(modp);无解则报告。