组合数逆元
Posted 声声醉如兰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合数逆元相关的知识,希望对你有一定的参考价值。
费马小定理:
在p是素数的情况下 a^p≡a(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; }
以上是关于组合数逆元的主要内容,如果未能解决你的问题,请参考以下文章