求逆元:

1.顺推求逆元:

证明

    inv[1]=1;//顺推求逆元 
    for(int i=2;i<=n;i++)//从2开始!!!
    inv[i]=( (mod-mod/i)*inv[mod%i] +mod ) %mod;

2.求阶层的逆元:

void init_fac(int n)
{
    fac[0]=1;
    for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i %mod;
    invfac[n]=quick_pow(fac[n],mod-2);//费马小定理求逆元 
    for(int i=n;i>=1;i--) invfac[i-1]=invfac[i]*i %mod;//就像求倒数一样 求阶层逆元 
}

3.费马小定理求逆元:

    inv=quick_pow(x,mod-2);

 

posted on 2019-08-28 21:38  rua-rua-rua  阅读(494)  评论(0编辑  收藏  举报