P3811 【模板】模意义下的乘法逆元题解

P3811 【模板】模意义下的乘法逆元

题目背景

这是一道模板题

题目描述

给定 n,pn,pn,p1∼n1\sim n1n 中所有整数在模 ppp 意义下的乘法逆元。

这里 aaappp 的乘法逆元定义为 ax≡1(modp)ax\equiv1\pmod pax1(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;
}
posted @ 2025-10-29 21:26  bz02_2023f2  阅读(2)  评论(0)    收藏  举报  来源