「考试」天空碎片

我们发现在\(p(p-1)\)范围内,每个数关于\(p\)\(\varphi(p)\)的余数对\((a,b)\)各不相同。
设原根为\(g\)

\[n\equiv g^{a}(mod\ p) \]

\[m\equiv g^{b}(mod\ p) \]

\[n\equiv c(mod\ \varphi(p)) \]

\[m\equiv d(mod\ \varphi(p)) \]

那么也就是说,在\(n,m\)不等于0的情况下:

\[ad\equiv bc(mod\ \varphi(p)) \]

由于余数对各不相同。
那么其实是在求:

\[ab\equiv cd(mod\ \varphi(p)),a,b,c,d\in[0,\varphi(p)) \]

的解的个数。
如果\(n,m\)等于0,等于0的部分的解就是\((p-1)^2\)
现在设:
\(N(m)\)\(m\)中满足条件的四个数组的个数。
那么设:

\[m=*\_p^e \]

由于:
\(p_i^{e_i}\)中某一个解和\(p_j^{e_j}\)中的某一个解分别为:

\[a_ib_i\equiv c_id_i(mod\ p_i^{e_i}) \]

\[a_jb_j\equiv c_jd_j(mod\ p_j^{e_j}) \]

所以得到:

\[a_ia_jb_ib_j\equiv c_ic_jd_id_j(mod\ p_i^{e_i}p_j^{e_j}) \]

这样子我们通过两个互质的数得到:

\[N(p_i^{e_i}p_j^{e_j})=N(p_i^{e_i})N(p_j^{e_j}) \]

所以说:

\[N(m)=\prod\limits_{i=1}^{w}N(p_i^{e_i}) \]

我们现在要求:\(N(p^e)\)
我们设:

\[ab\equiv t(mod\ p^e),a,b\in[0,p^e) \]

满足的数对\((a,b)\)个数为:\(C(t)\)
那么:

\[N(p^e)=\sum\limits_{i=0}^{p^e-1}C^2(i) \]

现在考虑如何求\(C(t)\)
假设我们现在已经确定了\(a\),要求满足条件的\(b\)的个数。
但是这样我们发现\(gcd(a,p^e)|t\)这个条件不一定成立,也就是说满足条件的个数可能为\(0\),这样不方便我们批量计算,仍然首先假设\(ab!=0\),0的情况之后特判掉。
所以这里提出\(a\)中含有的\(p\)的因子。
条件被转化为:

\[t=p^js,a=p^{\alpha}a',b=p^{\beta}b',a'b'\equiv s(mod\ p^{e-j}) \]

这样我们需要解的就是在满足一定的\(\alpha,\beta\)的情况下的\((a',b')\)数量。
先假设\(a'\)已经确定了。
那么:

\[a'b'\equiv s(mod\ p^{e-j}) \]

转化为线性方程:

\[a'b'+kp^{e-j}=s,b\in[0,p^{e-\beta}) \]

首先引理:
设a'b'的到的一组特解为:$$\begin{cases}b_0\k_0\end{cases}$$
\(d=gcd(a',e^{e-j})\)
那么通解可以表示为:

\[\begin{cases}b=b_0\frac{s}{d}+r\frac{p^{e-j}}{d}\\k=k_0\frac{s}{d}-r\frac{a'}{d}\end{cases} \]

其中\(r\)取遍整数集合。
证明一下:
我们设方程\(a'(b'+g_b)+p^{e-j}(k-g_k)=s\)成立。
那么:

\[a'b'+a'g_b+p^{e-j}k-p^{e-j}g_k=s \]

\[a'g_b=p^{e-j}g_k \]

\[{a'}_ddg_b={p^{e-j}}_ddg_k \]

\[\frac{p^{e-j}}{d}|g_b,\frac{a'}{d}|g_k \]

从而可以完整的验证上述引理。
有了这个就好说了。
这个方程中:

\[gcd(a',p^e)=1 \]

那么\(b'=b_0+rp^{e-j}\)
也就是说,每\(p^{e-j}\)出现一个解。
而取值区间为:

\[[0,p^{\beta}) \]

那么对于同一个\(a'\)\(b'\)的数量为:\(\frac{p^{\beta}}{p^{e-\beta-\alpha}}=p^{\alpha}\)
而我们的\(a'\)没有\(p\)的因子,那么他的数目为:\(\frac{p^{e-\alpha}(p-1)}{p}=p^{e-\alpha-1}(p-1)\)
所以对于某一组\((\alpha,\beta)\)\(a‘,b’\)的数目为:

\[p^{e-\alpha-1}(p-1)p^{\alpha}=p^{e-1}(p-1) \]

而有\(j+1\)\((\alpha,\beta)\)
所以:对于某一个\(t=p^js\)

\[C(t)=(j+1)p^{e-1}(p-1) \]

现在特判0:
\(1.a!=0\)
那么:\(ab+kp^e=0\)
\(a=p^{\alpha}g\)
那么\(d=gcd(a,p^e)=p^{\alpha}\)
\(b=b_0\frac{0}{d}+r\frac{p^{e}}{d}=r\frac{p^e}{d}\)
而:\(b\in[0,p^e)\)
所以说解的个数为:\(\frac{p^e}{\frac{p^e}{d}}=d=p^{\alpha}\)
而满足\(gcd(a,p^e)=p^{\alpha}\)\(a\)的个数为:\(\frac{p^e}{p^{\alpha}}\frac{p-1}{p}\)
对于\(C(0)\)的贡献就是:$$p{\alpha}\frac{pe}{p{\alpha}}\frac{p-1}{p}=p(p-1)$$
\(\alpha\in[0,e-1]\)
那么这部分的贡献就是:\(ep^{e-1}(p-1)\)
\(2.a==0\)
这部分的贡献就是\(b\)的个数,为\(p^e\)

那么:
\(C(0)=ep^{e-1}(p-1)+p^e=ep^{e-1}(p-1)+p^{e-1}((p-1)+1)=ep^{e-1}(p-1)+p^{e-1}(p-1)+p^{e-1}=(e+1)p^{e-1}(p-1)+p^{e-1}\)
所以,考虑到\(j\)相同的贡献都相同:

\[N(p^e)=C^2(0)+\sum\limits_{i=0}^{e-1}p^{e-j-1}(p-1)C^2(j) \]

这个式子直接迭代可以在\(log\)复杂度内解决。
那么可以求出\(N(m)\)

\(ans=(p-1)^2+N(\varphi(p))\)
而对于\(\varphi(p)\)的分解可以先筛出\(\sqrt{p}\)以内的质数。
\(p\)内的质数个数为\(\pi(p)\)
那么复杂度为:

\[O(\sqrt{p}+T(\pi(\sqrt{p}))) \]

问题得到解决。

posted @ 2019-12-18 07:18  Lrefrain  阅读(227)  评论(4编辑  收藏  举报