线性推逆元

逆元是很有用的东西。

p=ki+r

ki+r0(modp)k×r1+i10(modp)i1pi×(pmodi)(modp)

这样就可以线性推逆元了。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 3000006
#define LL long long
using namespace std;
int n,p,inv[maxn];
int main(){
    freopen("inverse.in","r",stdin);
    freopen("inverse.out","w",stdout);
    scanf("%d%d",&n,&p);
    inv[1]=1;
    for(int i=2;i<=n;i++)inv[i]=(p-(LL)p/i*inv[p%i]%p)%p;
    for(int i=1;i<=n;i++)printf("%d\n",inv[i]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/fyoier/article/details/78490206