P3811 【模板】模意义下的乘法逆元
题目:P3811 【模板】模意义下的乘法逆元
【模板】模意义下的乘法逆元
题目背景
这是一道模板题
题目描述
给定 $n,p$ 求 $1\sim n$ 中所有整数在模 $p$ 意义下的乘法逆元。
这里 $a$ 模 $p$ 的乘法逆元定义为 $ax\equiv1\pmod p$ 的解。
输入格式
一行两个正整数 $n,p$。
输出格式
输出 $n$ 行,第 $i$ 行表示 $i$ 在模 $p$ 下的乘法逆元。
样例 #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>
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define inf 0x3f3f3f3f
#define ll long long
#define el '\n'
using namespace std;
const int N = 3e6 + 5;
int n, m;
ll inv[N];
void solve()
{
cin >> n >> m;
inv[1] = 1;
cout << 1 << el;
for (int i = 2; i <= n; i++) {
inv[i] = m - (m / i * inv[m % i] % m) % m;
cout << inv[i] << el;
}
}
int main()
{
ios;
solve();
return 0;
}