题目描述
题解
首先考虑非余数情况下
\(x^k=A \rightarrow ln(x^k)=lnA \rightarrow x=e^{\frac{lnA}{k}}=A^{\frac{1}{k}}\)
在余数下,ln可以转换为ind指标形式
则
\(k\cdot ind(x)\equiv ind(A) \: \:(mod\:\: P-1)\)
求出ind(A)后上式就是一个一元一次模方程组\(k\cdot x+(P-1)\cdot y=ind(A)\)
用exgcd即可求出ind(x),成立当且仅当(k,P-1)| ind(A)
求出特解x,现在要求的所有的解,我们可以通过不断的向上调整 ?? 来得到所有的 ??,
因为\(0\leq x \leq P-1\),所以x在向上调整过程中模P-1是有周期的,用map记录下就行
最后\(x\equiv g^{ind(x)} (mod \: P)\)
所以本题分为三步
首先求出P意义下的原根g
再用BSGS求ind(A)
用exgcd求出ind(x)
最后再求出x
点击查看代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include