仅对模数 \(p\) 为质数时适用
跑的没有用 exgcd 求的快
int query(int x)
{
return ksm(x,p-2,p);
}
int ksm(long long x,int n,int p)
{
int re=1;
while(n)
{
if(n&1)
re*=x%p;
x*=x%p;
n>>=1;
}
return re%p;
}
可以对任意数求逆元
int query(int a,int p)
{
int x,y;
exgcd(a,p,x,y);
return (x+p)%p;
}
void exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
}
else
{
exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-a/b*y;
}
}
原文:https://www.cnblogs.com/nenT/p/11855763.html