- 时空限制1s / 256MB
题目背景
这是一道模板题
题目描述
给定n,p求1~n中所有整数在模p意义下的乘法逆元。
输入输出格式
输入格式:
一行n,p
输出格式:
n行,第i行表示i在模p意义下的逆元。
输入输出样例
说明
1 \leq n \leq 3 \times 10 ^ 6, n < p < 200005281≤n≤3×106,n<p<20000528
输入保证 pp 为质数。
-----------------------------------------------------------------------------------------------------
递推式的求导以后再写
递推式:inv[n]=(p-p/n)*inv[p%n]%p //inv[x]表示x对p的逆元
存个板子先:
1 #include<stdio.h> 2 #include<string.h> 3 #define maxn 3000010 4 int read(); 5 int n,p,inv[maxn]; 6 int main(){ 7 n=read();p=read(); 8 inv[1]=1; 9 printf("1\n"); 10 for(int i=2;i<=n;i++){ 11 inv[i]=(long long)(p-p/i)*inv[p%i]%p; 12 printf("%d\n",inv[i]); 13 } 14 return 0; 15 } 16 int read(){ 17 int ans=0,f=1;char c=getchar(); 18 while(‘0‘>c||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();} 19 while(‘0‘<=c&&c<=‘9‘)ans=ans*10+c-48,c=getchar();return ans*f; 20 }