[ABC212G] Power Pair(数论、推式子)

news/2025/2/5 22:04:38/

G - Power Pair(数论、推式子)

题意

​ 给定质数P,求有多少个x,y满足:

  • 0 ≤ x , y ≤ P − 1 0 \leq x, y \leq P-1 0x,yP1
  • ∃ n ∈ N , x n ≡ y ( m o d P ) ∃n∈N,x^{n}≡y(mod \ P) nN,xny(mod P)

分析

​ 由题意可知,就是要求 ∑ x = 0 P − 1 ∑ y = 0 P − 1 [ ∃ n ∈ N , x n ≡ y ( m o d P ) ] \sum_{x=0}^{P-1}\sum_{y=0}^{P-1}[∃n∈N,x^{n}≡y(mod \ P)] x=0P1y=0P1[nN,xny(mod P)],那么就尝试把这个式子化简一下,得到一个比较容易求的式子。

​ 不难观察出当 x = 0 x=0 x=0时,只有 y = 0 y=0 y=0满足题意,所以可以化简为:
a n s = ∑ x = 0 P − 1 ∑ y = 0 P − 1 [ ∃ n ∈ N , x n ≡ y ( m o d P ) ] = 1 + ∑ x = 1 P − 1 ∑ y = 1 P − 1 [ ∃ n ∈ N , x n ≡ y ( m o d P ) ] \begin{align} ans&=\sum_{x=0}^{P-1}\sum_{y=0}^{P-1}[∃n∈N,x^{n}≡y(mod \ P)]\\ &=1+\sum_{x=1}^{P-1}\sum_{y=1}^{P-1}[∃n∈N,x^{n}≡y(mod \ P)] \end{align} ans=x=0P1y=0P1[nN,xny(mod P)]=1+x=1P1y=1P1[nN,xny(mod P)]
因为P是素数,所以除0外 [ 1 , P − 1 ] [1,P-1] [1,P1]中所有的数都是原根,得到 ∀ k ∈ N + , 1 ≤ k ≤ P − 1 , ∃ n ∈ N , 1 ≤ n ≤ P − 1 , g n ≡ k ( m o d P ) ∀k∈N^{+}, 1≤k≤P−1,∃n∈N, 1≤n≤P−1,g^{n}≡k(mod \ P) kN+,1kP1,nN,1nP1,gnk(mod P),设 x = g a x=g^{a} x=ga y = g b y=g^{b} y=gb,可得
a n s = 1 + ∑ a = 1 P − 1 ∑ b = 1 P − 1 [ ∃ n ∈ N + , g a n ≡ g b ( m o d P ) ] \begin{align} ans=1+\sum_{a=1}^{P-1}\sum_{b=1}^{P-1}[∃n∈N^{+},g^{an}≡g^{b}(mod \ P)] \end{align} ans=1+a=1P1b=1P1[nN+,gangb(mod P)]
根据欧拉定理, g x m o d p g^{x}mod \ p gxmod p的循环节为 ϕ ( P ) = P − 1 \phi(P)=P-1 ϕ(P)=P1,因此可得
a n s = 1 + ∑ a = 1 P − 1 ∑ b = 1 P − 1 [ ∃ n ∈ N + , a n ≡ b ( m o d P − 1 ) ] \begin{align} ans=1+\sum_{a=1}^{P-1}\sum_{b=1}^{P-1}[∃n∈N^{+},an≡b(mod \ P-1)] \end{align} ans=1+a=1P1b=1P1[nN+,anb(mod P1)]
根据裴蜀定理, g c d ( a n , p − 1 ) ∣ b gcd(an,p-1)|b gcd(an,p1)b, a n = b + t ∗ ( P − 1 ) an=b+t*(P-1) an=b+t(P1), k ∈ N + , b = k ∗ g c d ( a n , P − 1 ) k∈N^{+},b=k*gcd(an,P-1) kN+,b=kgcd(an,P1)
a n s = 1 + ∑ a = 1 P − 1 ∑ b = 1 P − 1 [ g c d ( a , P − 1 ) ∣ b ] = 1 + ∑ a = 1 P − 1 ∑ k = 1 ∞ [ k ≤ P − 1 g c d ( a , P − 1 ) ] = 1 + ∑ a = 1 P − 1 P − 1 g c d ( a , P − 1 ) \begin{align} ans&=1+\sum_{a=1}^{P-1}\sum_{b=1}^{P-1}[gcd(a,P-1)|b]\\ &=1+\sum_{a=1}^{P-1}\sum_{k=1}^{\infty}[k \leq \frac{P-1}{gcd(a,P-1)}]\\ &=1+\sum_{a=1}^{P-1}\frac{P-1}{gcd(a,P-1)} \end{align} ans=1+a=1P1b=1P1[gcd(a,P1)b]=1+a=1P1k=1[kgcd(a,P1)P1]=1+a=1P1gcd(a,P1)P1
f ( n ) = ∑ i = 1 n n g c d ( i , n ) f(n)=\sum_{i=1}^{n}\frac{n}{gcd(i,n)} f(n)=i=1ngcd(i,n)n
f ( n ) = ∑ i = 1 n n g c d ( i , n ) = ∑ i = 1 n ∑ d ∣ i , d ∣ n n d [ g c d ( i , n ) = d ] = ∑ d ∣ n n d ∑ i = 1 n d [ g c d ( i , n d ) = 1 ] = ∑ d ∣ n n d ϕ ( n d ) = ∑ d ∣ n d ϕ ( d ) \begin{align} f(n)&=\sum_{i=1}^{n}\frac{n}{gcd(i,n)}\\ &=\sum_{i=1}^{n}\sum_{d|i,d|n}\frac{n}{d}[gcd(i,n)=d]\\ &=\sum_{d|n}\frac{n}{d}\sum_{i=1}^{\frac{n}{d}}[gcd(i,\frac{n}{d})=1]\\ &=\sum_{d|n}\frac{n}{d}\phi(\frac{n}{d})\\ &=\sum_{d|n}d\phi(d) \end{align} f(n)=i=1ngcd(i,n)n=i=1ndi,dndn[gcd(i,n)=d]=dndni=1dn[gcd(i,dn)=1]=dndnϕ(dn)=dndϕ(d)
因此要求的就是
a n s = 1 + f ( P − 1 ) = 1 + ∑ d ∣ ( P − 1 ) d ϕ ( d ) \begin{align} ans&=1+f(P-1)\\ &=1+\sum_{d|(P-1)}d\phi(d) \end{align} ans=1+f(P1)=1+d(P1)dϕ(d)
欧拉函数有两种公式可以求

  • ϕ ( n ) = Π ( p i e i − p i ( e i − 1 ) ) ( p i ∣ n ) \phi(n)=\Pi (p_{i}^{e_{i}}-p_{i}^{(e_{i}-1)})(p_{i}|n) ϕ(n)=Π(pieipi(ei1))(pin)
  • ϕ ( n ) = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) … ( p i ∣ n ) \phi(n)=n(1-\frac{1}{p_{1}})(1-\frac{1}{p_{2}})\dots(p_{i}|n) ϕ(n)=n(1p11)(1p21)(pin)

AC代码:

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int mod = 998244353;
LL phi(LL a) {LL res = a;for (LL i = 2; i * i <= a; i++) {if (a % i == 0) {res = res / i * (i - 1);while (a % i == 0) {a /= i;}}}if (a > 1) {res = res / a * (a - 1);}return res % mod;
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);LL ans = 1;LL p;cin >> p;p--;LL i = 1;for (; i * i < p; i++) {if (p % i == 0) {ans = (ans + i % mod * phi(i) % mod) % mod;ans = (ans + (p / i) % mod * phi(p / i) % mod) % mod;}}if (i * i == p) {ans = (ans + i % mod * phi(i) % mod) % mod;}cout << ans << '\n';return 0;
}

http://www.ppmy.cn/news/740583.html

相关文章

解决HP打印机正在打印问题

进入服务 关闭print spooler服务 打开spool 找到PRINTERS 删除里面的文件 进入服务 开启print spooler服务 断掉打印机电源一分钟 重新连接

计算机打印机提示无法打印,为什么电脑连的打印机没法打印状态一直错误

您好&#xff01;可以参照下面的方法来解决问题: 一、首先是检查打印机面板指示灯是否异常&#xff0c;如果有异常闪烁&#xff1a; 1. 请检查打印机内是否有卡纸&#xff0c;如有卡住纸张或纸片&#xff0c;请取出再试。 2. 检查打印机硒鼓是否安好&#xff0c;或者硒鼓是不是…

Secure CRT自动连接打印机打印乱码问题

最近发现了一件怪事&#xff0c;发现自己的电脑会自动连接打印机打印文件。 关键是打印出来的都是乱码&#xff0c;一行行的电波文&#xff0c;看的脑阔疼。 刚开始还不知道是什么原有导致的。 后来一狠心把打印机给删除了。 第二天&#xff0c;过了一段时间后&#xff0c;…

计算机内存不足无法打印照片,打印机内存不足无法打印怎么办_打印机提示内存不足怎么解决...

无论是在学校或者在办公中,打印机随处可见,打印机可以将电脑上的图片文字打印下来。当我们在使用打印机的时候会遇到这么一个问题,那就是打印机在打印的时候提示内存不足,然后就无法打印。那么打印机提示内存不足该怎么解决呢?接下来小编就给大家带来打印机内存不足无法打…

打印机一直在打印

点开始&#xff0c;在运行里面输入如下内容&#xff08;双引号不输入&#xff09;&#xff1a;“net stop spooler”“spool”此时打开了一个文件夹“C:\WINDOWS\system32\spool”&#xff0c;删除“PRINTERS”文件夹里面的内容然后再点击开始&#xff0c;在运行里面输入“net …

hp打印机一直显示正在打印中_安装惠普打印机出现“新设备现已连接”一直不动怎么办?...

问&#xff1a;安装惠普打印机驱动时一直停留在“新设备现已连接”&#xff0c;等了很久就是无法进入下一步安装&#xff0c;怎么办&#xff1f;(如下图&#xff1a;) 答&#xff1a;本文以安装HP P1108驱动为例(同样适用于其它型号)&#xff0c;跟大家分享一下安装惠普打印机驱…

打印机自动打印之前的页面的解决方法

现象&#xff1a;电脑重新启动后&#xff0c;打印机自动打印之前的页面。 解决方法如下&#xff1a;&#xff08;仅供参考&#xff09; 1. 单击电脑左下角“开始”→“打印机和传真”。在“打印机和传真”窗口中&#xff0c;找到打印机的图标。 2. 在“打印机和传真”窗口中&a…

计算机打印机停止运行命令,打印机一直在打印应该怎样停止?

【天极网办公频道】在日常办公过程中&#xff0c;我们或多或少会遇到与打印相关的问题&#xff0c;比如打印机一直在打印应该怎样停止&#xff1f;其实&#xff0c;解决类似的问题有很多种方法&#xff0c;比如取消打印文档、停止Print Spooler系统服务&#xff0c;有必要的时候…