线性推逆元

来源:互联网 发布:发型配帽子 知乎 编辑:程序博客网 时间:2024/06/18 15:00

逆元是很有用的东西。

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 longusing 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;}
原创粉丝点击