P3811 【模板】乘法逆元
题目背景
这是一道模板题
题目描述
给定n,p求1~n中所有整数在模p意义下的乘法逆元。
输入格式
一行n,p
输出格式
n行,第i行表示i在模p意义下的逆元。
输入输出样例
输入 #1复制
10 13
输出 #1复制
1 7 9 10 8 11 2 5 3 4
说明/提示
1≤n≤3×10^6,n<p<20000528
输入保证 p 为质数。
线性推逆元的公式: inv[i]=(p-p/i)*inv[p%i]%p;
可以一次把从1到n所有的数对于p的逆元求出来
#include<bits/stdc++.h>
using namespace std;
long long n,p,inv[3000006];
int main()
{
cin>>n>>p;
inv[1]=1;
printf("1\n");
for(long long i=2; i<=n; i++)
{
inv[i]=(p-p/i)*inv[p%i]%p;
printf("%lld\n",inv[i]);
}
return 0;
}