BSGS6
用途 :
用来解决形似\(a^x\equiv c\mod P(a,c,P为常数且P为质数,a为P的原根,x为要求的数)\)
插播:
\(x\)的范围为\(0\le x\le P-1\)
证明:
因为\(a\)是\(P\)的原根,所以$\left { a0,a1,\dots,a^{P-1} \right }\mod P 后是\left { 0,1,\dots,P-1 \right } $,所以\(0\le x\le P-1\)
题方法:
- 暴力:从\(0\)开始枚举\(x\),直到有答案,时间复杂度\(O(P\log P)\)
- BSGS
找一个常数\(K\) ,将\(x\)分成\(Kp-q(p\in\left\{1,2,\dots,\lceil P/K\rceil \right\},q\in\left\{1,2,3,\dots,K \right\})\),这样可以将\(x\)枚举全。
此时得到\(a^{Kp-q}\equiv c \mod P\)即\(a^{Kp}\equiv ca^q\mod p\)
这时枚举右侧式子并存在一个桶里,然后枚举左侧,看桶中有没有满足条件的,有的话就找到了一组可行解。
\(K\)的取值:因为时间复杂度为\(O((\lceil P/K\rceil + K)\log K)\),中间括号里的式子可以用基本不等式求出最小值为\(2\sqrt{P}\)此时\(K = \sqrt{P}\),时间复杂度为\(O(2\sqrt{P}log\sqrt{P})\)

浙公网安备 33010602011771号