题目背景
这是一道模板题
题目描述
给定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×106,n<p<20000528 1 \leq n \leq 3 \times 10 ^ 6, n < p < 20000528 1≤n≤3×106,n<p<20000528
输入保证 p , p 为质数。
求1-nmodp的逆元的模板
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn=3*10e6+5;
typedef long long ll;
ll n,p;
ll inv[maxn];
int main()
{
scanf("%lld%lld",&n,&p);
inv[1]=1;
printf("%lld\n",inv[1]);
for (int i=2;i<=n;i++)
{
inv[i] = inv[p % i] * (p - p / i) % p;
printf("%lld\n",inv[i]);
}
return 0;
}