[学习笔记]组合数取模的几种求法

一、引入

给定 n n n m m m p p p ,求:
( n m )   m o d   p \binom nm\bmod p (mn)modp
其中 ( n m ) \binom nm (mn) 为组合数,表示 n n n 个元素中选出 m m m 个的方案数。
即:
( n m ) = n ! m ! × ( n − m ) ! \binom nm=\frac{n!}{m!\times(n-m)!} (mn)=m!×(nm)!n!
特殊地,我们规定 ( n 0 ) = 1 \binom n0=1 (0n)=1 且当 n &lt; m n&lt;m n<m ( n m ) = 0 \binom nm=0 (mn)=0

二、 n , m ≤ 3 , 000 n,m\le 3,000 n,m3,000

( n m ) = ( n − 1 m ) + ( n − 1 m − 1 ) \binom nm=\binom {n-1}m+\binom{n-1}{m-1} (mn)=(mn1)+(m1n1)
(1)组合意义:
考察 n n n 个元素中的最后一个元素是否被选出。
如果没有被选出,那么前面的 n − 1 n-1 n1 个元素必须选出 m m m 个,即 ( n − 1 m ) \binom {n-1}m (mn1)
如果被选出,那么前面的 n − 1 n-1 n1 个元素必须选出 m − 1 m-1 m1 个,即 ( n − 1 m − 1 ) \binom {n-1}{m-1} (m1n1)
(2)数学推导:
( n − 1 m ) + ( n − 1 m − 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)!} (mn1)+(m1n1)=m!×(n1m)!(n1)!+(m1)!×(nm)!(n1)!
= ( n − 1 ) ! × ( n − m ) + ( n − 1 ) ! × m m ! × ( n − m ) ! = n ! m ! × ( n − m ) ! = ( n m ) =\frac{(n-1)!\times(n-m)+(n-1)!\times m}{m!\times(n-m)!}=\frac{n!}{m!\times(n-m)!}=\binom nm =m!×(nm)!(n1)!×(nm)+(n1)!×m=m!×(nm)!n!=(mn)
(3)生成函数:
根据二项式定理 ( a + b ) n = ∑ i = 0 n ( n i ) a i b n − i (a+b)^n=\sum_{i=0}^n\binom nia^ib^{n-i} (a+b)n=i=0n(in)aibni ,数列
( n 0 ) , ( n 1 ) , ( n 2 ) , . . . , ( n n ) \binom n0,\binom n1,\binom n2,...,\binom nn (0n),(1n),(2n),...,(nn)
的生成函数为 ( 1 + x ) n (1+x)^n (1+x)n
于是 ( n m ) \binom nm (mn) 就是 ( 1 + x ) n (1+x)^n (1+x)n m m m 次项。
( F ( x ) ) k (F(x))_k (F(x))k 表示多项式 F ( x ) F(x) F(x) k k k 次项。
则:
( n − 1 m ) + ( n − 1 m − 1 ) = ( ( 1 + x ) n − 1 ) m + ( ( 1 + x

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值