[模板]乘法逆元

来源:互联网 发布:fc模拟器mac版 编辑:程序博客网 时间:2024/05/21 06:34

定义

乘法逆元是一个十分有用的东西。
给定q,xx1y(mod q)
就是说求xy=1(mod q)y的最小值

意义

mod p意义下
xy=x×y1
可以由此取整

求法

费马小定理

yqy(mod q)q为质数)

求解

我们可以通过费马小定理,得:
yq11(mod q)
yq21y=y1(mod q)
所以:
y1yq2(mod q)

线性递推

f[i]=(pp/i)f[i mod p]

int n,p,f[3000010];int main(){    n=read();    p=read();    printf("%d\n",f[1]=1);    fr(i,2,n)        printf("%d\n",f[i]=(ll)(p-p/i)*f[p%i]%p);    rt 0;}

练手题

Luogu P3811
需要快速幂
注:
程序中power(i,p2,p)=ip2 mod p

int n,p;int main(){    n=read();    p=read();    fr(i,1,n)        printf("%d\n",power(i,p-2,p));    rt 0;}
原创粉丝点击