首页 > 其他分享 >对于 组合数 取模的各种情况

对于 组合数 取模的各种情况

时间:2023-01-13 09:11:06浏览次数:54  
标签:取模 各种 组合 10 dfrac bmod times le binom

1、当 \(n,m\le1000\),\(p\) 为任意数时

可以使用暴力(\(\text{O}(n^2)\))求解 杨辉三角 的方式,计算

\[\binom{n}{m} = \binom{n-1}{m-1}\sdot\binom{n-1}{m} \]

2、当 \(n,m\le 10^6\),\(p\approx 10^9\) 且 \(p\) 为素数时

利用公式

\[\binom{n}{m} =\dfrac{n!}{m!(n-m)!}\bmod p \]

\(\text O(n)\) 预处理阶乘,然后求逆元。

3、当 \(n\le 10^6\),\(m\le 1000\),\(p\) 为任意数时

\[\binom{n}{m} =\dfrac{n!}{m!(n-m)!}=\dfrac{n\times(n-1)\times\dots(n-m+1)}{1\times 2\times 3\times \dots\times m} \]

然后可以尝试约分,得到

\[\binom{n}{m} = x_1\times x_2\times x_3\times\dots\times x_m \]

4、当 \(n,m\le 10^9\),\(p\le 1000\) 且 \(p\) 为素数时

因为 \(p\) 的范围较小,且 \(p\) 为素数,考虑 Lucas定理 求解,

\[\binom{n}{m}\bmod p= \binom{\left\lfloor n/p\right\rfloor}{\left\lfloor m/p\right\rfloor}\cdot\binom{n\bmod p}{m\bmod p}\bmod p \]

标签:取模,各种,组合,10,dfrac,bmod,times,le,binom
From: https://www.cnblogs.com/Cnghit/p/17048526.html

相关文章