数论随笔(updating)

数论笔记

BSGS(大步小步法)

​ 求解形如\(a^x \equiv b (mod p)\)的方程的\(x\)\((gcd(a,b) = 1)\)

​ 令\(x = m\sqrt{p}-n(m,n\leq \sqrt{p})\),那么\(a^{m\sqrt{p}-n}\equiv b(mod p)\),将两边同乘一个\(a^n\),可得\(a^{m\sqrt{p}}\equiv ba^n(mod p)\)

​ 然后先枚举\(n\),用哈希表把右边存下来,再枚举\(m\),看有无能与它同余的\(n\)值,就可以知道\(x\)

​ 若要求最小解,哈希表中相同哈希值的那一位取\(n\)的最大值,然后在比较的时候取一下\(max\)值就好了。

总结:数论中常用的构造法的一个鲜明的例子,将枚举\(p\)次构造成两边各枚举\(\sqrt{p}\)次,以后数论中要常想到用这种构造法。

扩展BSGS

​ 假如上面的\(a,p\)不互质该怎么办呢?

​ 辣么我们通过不断除去\(gcd(a,p)\),来使它们变得互质,具体而言:

​ 首先求\(gcd(a,p)=c_i\),然后可以得到\(\frac{a}{c_i}a^{x-1}\equiv \frac{b}{c_i}(mod\ \frac{p}{c_i})\)

​ 然后,\(\frac{a}{c_i}a^{x-1}\)\(\frac{p}{c_i}\)可能依然不互质,那么我们依葫芦画瓢,再除去一个\(gcd(a,\frac{p}{c_i})\)

​ 如果仍然不互质,就一直除到两者互质为止,假设我们除了\(k\)次,那么我们可得

\(\frac{a^k}{\prod_{i=1}^{k} c_i}a^{x-k}\equiv \frac{b}{\prod_{i=1}^{k} c_i}(mod\ \frac{p}{\prod_{i=1}^{k} c_i})\)

​ 然后\(\frac{a^k}{\prod_{i=1}^{k} c_i}\)是个可以算出来的常量,我们把它除到右边去就好了,因为\(\frac{p}{\prod_{i=1}^{k} c_i}\)\(a\)互质,所以有逆元,可以除。

​ 当然,\(x\)可能小于\(k\),我们\(O(\sqrt{p})\)的时间直接枚举看看在小于\(k\)的范围内有没有解就好了。

posted @ 2021-01-09 10:46  I11usi0ns  阅读(68)  评论(0编辑  收藏  举报