题目背景
这是一道模板题
题目描述
给定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 leq n leq 3 imes 10 ^ 6, n < p < 20000528 1≤n≤3×10
6
,n
#include
#include
#include
using namespace std;
typedef long long LL ;
int n,p;
inline void Fast_Pow(LL a,int b){
LL ret=1;
while(b){
if(b&1) ret=(ret*a)%p;
a=(a*a)%p,b>>=1;
}
printf("%lld
",ret);
return ;
}
int Main(){
scanf("%d%d",&n,&p);
for(register int i=1;i<=n;++i) Fast_Pow(i,p-2);
return 0;
}
int Aptal_is_My_Son=Main();
int main(int argc,char *argv[]){ ; }
AC代码:
#include
#include
#include
#include
using namespace std;
typedef long long LL ;
const int MAXN = 3*1e6+5;
LL inv[MAXN];
void pre_inv(){
int p,n; inv[1]=1;
cin>>n>>p;
cout<<1<for(int i=2;i<=n;i++) inv[i]=(LL)(p-p/i)*inv[p%i]%p,printf("%lld
",inv[i]);
}
int main(){
pre_inv();
return 0;
}