求ax=1(mod p),当gcd(a,p)=1时,存在逆元
1.exgcd,求ax+kp=1,x即逆元
void exgcd(LL a,LL b,LL &x,LL &y){//x可能是负的最后逆元为(x%p+p)%p if(!b){ x=1; y=0; return ; } exgcd(b,a%b,y,x); y-=a/b*x; }
2.费马小定理a^(p-1)=1(mod p),a*a^(p-2)=1(mod p),所以a^(p-2)为a的逆元
LL inv(LL a,LL p){//a^(p-2)
LL n=p-2,ans=1;
while(n){
if(n&1){
ans=ans*a%p;
}
a=a*a%p;
n>>=1;
}
return ans;
}
本文介绍了两种求解模逆元的方法:扩展欧几里得算法(exgcd)和费马小定理。当gcd(a,p)=1时,通过exgcd求解线性方程ax+kp=1找到逆元x;利用费马小定理a^(p-2)作为a的逆元,适用于大数计算。
454

被折叠的 条评论
为什么被折叠?



