组合数逆元

Posted 声声醉如兰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合数逆元相关的知识,希望对你有一定的参考价值。

费马小定理:

  在p是素数的情况下 a^pa(modp),对式子变形得:a^(p-1)1(modp),那么a的逆元inv[a] = a^(p-2)。

 

组合数C(m,n) = m! / (n! * (m-n)!),当C(m,n)特别大的时候,需要对p取余,若p是素数,那么可以利用费马小定理快速求逆元。

C(m,n) % p = (m! / (n! * (m-n)!))%p = (m! / (m-n)! * inv[n!])%p

 

m! / (m-n)! * inv[n!]可以O(n)实现,代码如下

技术分享
LL C(LL m,LL n)
{
    LL ans = 1;
    for(LL i=1;i<=n;i++)
    {
        ans = ans*(m-i+1)%mod*inv[i]%mod;
    }
    return ans;
}
View Code

 

以上是关于组合数逆元的主要内容,如果未能解决你的问题,请参考以下文章

Steps

loj Snakes 的 Naïve Graph 数论

计算四元数逆

组合数与除法逆元,阶乘逆元递推

阶乘逆元线性求逆元组合计数牛妹的数学难题

2019 ICPC南京站 B题 Chessboard组合数,乘法逆元