「考试」天空碎片

我们发现在\(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{p^e}{p^{\alpha}}\frac{p-1}{p}=p^{e-1}(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})))\]
问题得到解决。

猜你喜欢

转载自www.cnblogs.com/Lrefrain/p/12057913.html