一、引入
给定 nnn , mmm , ppp ,求:
(nm) mod p\binom nm\bmod p(mn)modp
其中 (nm)\binom nm(mn) 为组合数,表示 nnn 个元素中选出 mmm 个的方案数。
即:
(nm)=n!m!×(n−m)!\binom nm=\frac{n!}{m!\times(n-m)!}(mn)=m!×(n−m)!n!
特殊地,我们规定 (n0)=1\binom n0=1(0n)=1 且当 n<mn<mn<m 时 (nm)=0\binom nm=0(mn)=0 。
二、 n,m≤3,000n,m\le 3,000n,m≤3,000
(nm)=(n−1m)+(n−1m−1)\binom nm=\binom {n-1}m+\binom{n-1}{m-1}(mn)=(mn−1)+(m−1n−1)
(1)组合意义:
考察 nnn 个元素中的最后一个元素是否被选出。
如果没有被选出,那么前面的 n−1n-1n−1 个元素必须选出 mmm 个,即 (n−1m)\binom {n-1}m(mn−1) 。
如果被选出,那么前面的 n−1n-1n−1 个元素必须选出 m−1m-1m−1 个,即 (n−1m−1)\binom {n-1}{m-1}(m−1n−1) 。
(2)数学推导:
(n−1m)+(n−1m−1)=(n−1)!m!×(n−1−m)!+(n−1)!(m−1)!×(n−m)!\binom{n-1}m+\binom{n-1}{m-1}=\frac{(n-1)!}{m!\times(n-1-m)!}+\frac{(n-1)!}{(m-1)!\times(n-m)!}(mn−1)+(m−1n−1)=m!×(n−1−m)!(n−1)!+(m−1)!×(n−m)!(n−1)!
=(n−1)!×(n−m)+(n−1)!×mm!×(n−m)!=n!m!×(n−m)!=(nm)=\frac{(n-1)!\times(n-m)+(n-1)!\times m}{m!\times(n-m)!}=\frac{n!}{m!\times(n-m)!}=\binom nm=m!×(n−m)!(n−1)!×(n−m)+(n−1)!×m=m!×(n−m)!n!=(mn)
(3)生成函数:
根据二项式定理 (a+b)n=∑i=0n(ni)aibn−i(a+b)^n=\sum_{i=0}^n\binom nia^ib^{n-i}(a+b)n=∑i=0n(in)aibn−i ,数列
(n0),(n1),(n2),...,(nn)\binom n0,\binom n1,\binom n2,...,\binom nn(0n),(1n),(2n),...,(nn)
的生成函数为 (1+x)n(1+x)^n(1+x)n 。
于是 (nm)\binom nm(mn) 就是 (1+x)n(1+x)^n(1+x)n 的 mmm 次项。
设 (F(x))k(F(x))_k(F(x))k 表示多项式 F(x)F(x)F(x) 的 kkk 次项。
则:
(n−1m)+(n−1m−1)=((1+x)n−1)m+((1+x)n−1)m−1\binom{n-1}m+\binom{n-1}{m-1}=((1+x)^{n-1})_m+((1+x)^{n-1})_{m-1}(mn−1)+(m−1