逆元的三种求法,1,2求单个,3求多个

1.费马小定理
int qmi(int a,int k,int mod){//快速幂 算a的k次方 
Int res=1;
while(k){
if(k&1/*判断是否为奇数 */) res=(int)res*a%mod;
a=(int)a*a%mod;
k>>=1/*实际上将K除以2*/;
}
return res;
}
Int inv(int a){
Return qmi(a,M-2,M); 
}
2.扩展欧几里得
LL exgcd(LL a,LL b,LL &x,LL &y)//扩展欧几里得算法 
{
    if(b==0)
    {
        x=1,y=0;
        return a;
    }
    LL ret=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return ret;
}
LL getInv(int a,int mod)//求a在mod下的逆元,不存在逆元返回-1 
{
    LL x,y;
    LL d=exgcd(a,mod,x,y);
    return d==1?(x%mod+mod)%mod:-1;
}
3.线性递推
inv[1] = 1;
    for(int i=2;i<=n;i++){
        inv[i] = p - (p / i * inv[p % i] % p) % p;
    }
全部评论

相关推荐

我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
迷茫的大四🐶:当你得到一些东西,那这些东西就会变成基本项,你有别人也有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务