逆元模板

1.费马小定理

typedef long long ll;
const ll mod=998244353;
inline ll qpow(ll a,ll b){
    ll res=1;
    while(b>0){
        if(b&1)res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
//a的逆元 = qpow(a,mod-2)

2.扩展欧几里得

typedef long long ll;
const ll mod=998244353;
inline ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!b){
        x=1;
        y=0;
        return a;
    }
    ll d=exgcd(b,a%b,x,y);
    ll tmp=x;
    x=y;
    y=tmp-a/b*y;
    return d;
}
inline ll inv(ll a){
    ll x,y;
    ll d=exgcd(a,mod,x,y);
    if(d==1){
        return (x%mod+mod)%mod;
    }
    return -1;
}
//a的逆元的inv(a)

你可能感兴趣的:(总结)