P3811 【模板】乘法逆元

 

 

 

/*
#include<cstdio>
#include<iostream>
#include<algorithm>
//#include<queue>
//#include<vector>
//#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=1e1 ;

int x,y,n,p;
void exgcd(int a,int b,int &x,int &y){
    if(b==0){ x=1,y=0;return;}
    exgcd(b,a%b,y,x); y-=(a/b)*x;
}
int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>p;
    
    for(int i=1;i<=n;i++)
    {
        x=0,y=0;
        exgcd(i,p,x,y);
        cout<<(x%p+p)%p<<endl;
    }
    
    return 0;
}*/
/*
//TLE_83分
#include<cstdio> 
#define ll long long
using namespace std;
int n,p;
inline ll ksm(ll a,ll b){
    ll ans=1;
    a%=p;
    while(b){
        if(b&1) ans=ans*a%p;
        a=a*a%p;
        b>>=1;
    }
    return ans%p;
}
void write(ll x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) write(x/10);putchar(x%10^48);
}
int main(){
    scanf("%d%d",&n,&p);
    for(int i=1;i<=n;i++)
        write(ksm(i,p-2)),putchar('\n');
    return 0;
}*/

#include<cstdio>
#include<iostream>
#include<algorithm>
//#include<queue>
//#include<vector>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=3e6+10 ;

ll n,p,inv[maxn];
int main()
{
    //ios::sync_with_stdio(false);
    cin>>n>>p;
    inv[1]=1; cout<<inv[1]<<endl;
    for(int i=2;i<=n;i++)
        inv[i]=(p-p/i)*inv[p%i]%p,printf("%lld\n",inv[i]);
    
    
    return 0;
}
View Code

 

posted @ 2023-08-25 10:15  JMXZ  阅读(8)  评论(0)    收藏  举报