数论之神

数论之神

求解方程\(x^A\equiv B(\bmod 2k+1)\)的解的个数

首先由于模数不是质数,所以我们先考虑拆分成质数的幂次形式,然后分别求解,可以发现根据CRT的性质,对于两两互质的模数,我们构成的剩余系和原来的数形成双射,所以所有解得个数等于每个方程解的个数的乘积。

问题转化为\(x^A\equiv B(\bmod p^a)\)然后考虑分类讨论。

第一种情况,当\(p^a|B\)时,问题等价于\(x^A\equiv 0(\bmod p^a)\)那么将x表示成p的形式\(x=p^kb\),\(p^{kA}b^A\equiv0(\bmod p^a)\)

那么必然有\(kA\ge a\)所以$k\ge \lceil \frac{a}{A} \rceil $

那么解的个数就应该是\(p^{a-\lceil \frac{a}{A} \rceil}\),那么我们可以考虑将上取整转化为下取整。

\[\lfloor\frac{c-1}{a}\rfloor+1=\lceil\frac{a}{c}\rceil \]

证明:

\(x=\lfloor\frac{c-1}{a}\rfloor\),那么有\(x\le\frac{c-1}{a}<{x+1}\)

\[ax\le c-1< a(x+1)\\ ax+1\le c<a(x+1)+1\\ ax<c\le a(x+1)\\x<\frac{c}{a}\le x+1\\ \]

所以\(x+1=\lceil\frac{a}{c}\rceil\)

第二种情况,当\((p^a,B)=1\),将方程转化为\(Aind(x)\equiv ind(B)(\bmod\varphi(p^a))\)

然后利用BSGS可以求出\(ind(B)\),那么方程变成\(ax\equiv b(\bmod p)\)

原方程解的个数对应上面方程解的个数

如果\(b\bmod\gcd(a,p)\ne 0\)则无解,否则解的个数为\(\gcd(a,p)\),这是因为我们考虑\(exgcd\)的周期为\(gcd(a,p)\),所以一共有\(\frac{p}{\gcd(a,p)}\)个点,每个点恰好被经过\(\frac{p}{\frac{p}{\gcd(a,p)}}=\gcd(a,p)\)次。

第三种情况,当\((p^a,B)\ne1\),将\(B=p^{cnt}b\)原方程变为\(x^A\equiv p^{cnt}b(\bmod p^a)\)

如果\(cnt \bmod A\ne0\)此方程无解,这是由于两边\(p\)所在的项指数必须相同,所以\(A|cnt\),即使经过取模之后这个指数是不会改变的。

否则把方程转化为

\[(\frac{x}{p^{\frac{cnt}{A}}})^A\equiv b(\bmod p^{a-cnt}) \]

此时\((p^{a-cnt},b)=1\),方程转化为第二种情况。

但是原式中x的取值范围是\([0,p^a]\),那么\(\frac{x}{p^{\frac{cnt}{A}}}\)的取值范围就是\([0,p^{a-\frac{cnt}{A}}]\)

但是在最后这个式子里\(\frac{x}{p^{\frac{cnt}{A}}}\)的取值范围是\([0,p^{a-cnt})\)

所以最后需要在结果上乘\(\frac{p^{a-\frac{cnt}{A}}}{p^{a-cnt}}=p^{cnt-\frac{cnt}{A}}\)

posted @ 2021-03-08 10:14  dinlon  阅读(77)  评论(0)    收藏  举报