【POJ2417】Discrete Logging
Description
给定形如$a^x\equiv b\pmod p$的高次同余方程,求解$x$
Solution
BSGS的模板题
假设$x=i*t-j$,并且$t=\lceil\sqrt p\rceil,0\leq j\leq {t-1}$
那么方程可化为$a^{i*t-j}\equiv b\pmod p$
变形,得$(a^t)^i\equiv b*a^j\pmod p$
对于所有的$j\in[0,t-1]$,把$b*a^j\mod p$放入哈希表
对于所有的$i\in[0,t]$,计算出$(a^t)^i\mod p$,在哈希表中查找是否存在对应的$j$即可。
时间复杂度为$O(\sqrt p)$