P3811 【模板】模意义下的乘法逆元题解
P3811 【模板】模意义下的乘法逆元
题目背景
这是一道模板题
题目描述
给定 n,pn,pn,p 求 1∼n1\sim n1∼n 中所有整数在模 ppp 意义下的乘法逆元。
这里 aaa 模 ppp 的乘法逆元定义为 ax≡1(modp)ax\equiv1\pmod pax≡1(modp) 的解。
输入格式
一行两个正整数 n,pn,pn,p。
输出格式
输出 nnn 行,第 iii 行表示 iii 在模 ppp 下的乘法逆元。
输入输出样例 #1
输入 #1
10 13
输出 #1
1
7
9
10
8
11
2
5
3
4
说明/提示
$ 1 \leq n \leq 3 \times 10 ^ 6,,,n < p < 20000528 $。
输入保证 $ p $ 为质数。
思路
直接递推逆元即可。
代码见下
#include<bits/stdc++.h>
using namespace std;
long long a,b[3000006],p;
long long abc(long long a1,long long b1){
long long c1=1;
while(b1!=0){
if(b1%2==1){
c1=c1*a1%p;
}
a1=a1*a1%p;
b1/=2;
}
return c1;
}
int main(){
cin>>a>>p;
b[1]=1;
cout<<1<<endl;
for(int i=2;i<=a;i++){
b[i]=(p-p/i)*(b[p%i])%p;
printf("%lld\n",b[i]);
}
return 0;
}

浙公网安备 33010602011771号