1. 程式人生 > >[學習筆記]組合數取模的幾種求法

[學習筆記]組合數取模的幾種求法

一、引入

給定 n n m m p p

,求:
( n m )   m o
d   p \binom nm\bmod p

其中 ( n m
) \binom nm
為組合數,表示 n n 個元素中選出 m m 個的方案數。
即:
( n m ) = n ! m ! × ( n m ) ! \binom nm=\frac{n!}{m!\times(n-m)!}
特殊地,我們規定 ( n 0 ) = 1 \binom n0=1 且當 n < m n<m ( n m ) = 0 \binom nm=0

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

( n m ) = ( n 1 m ) + ( n 1 m 1 ) \binom nm=\binom {n-1}m+\binom{n-1}{m-1}
(1)組合意義:
考察 n n 個元素中的最後一個元素是否被選出。
如果沒有被選出,那麼前面的 n 1 n-1 個元素必須選出 m m 個,即 ( n 1 m ) \binom {n-1}m
如果被選出,那麼前面的 n 1 n-1 個元素必須選出 m 1 m-1 個,即 ( n 1 m 1 ) \binom {n-1}{m-1}
(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)!}
= ( 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
(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} ,數列
( n 0 ) , ( n 1 ) , ( n 2 ) , . . . , ( n n ) \binom n0,\binom n1,\binom n2,...,\binom nn
的生成函式為 ( 1 + x ) n (1+x)^n
於是 ( n m ) \binom nm 就是 ( 1 + x ) n (1+x)^n m m 次項。
( F ( x ) ) k (F(x))_k