组合数公式


组合数C(n,m)=Cnm=(nm)

递推式

C(n,m)=C(n1,m1)+C(n1,m)

组合数完全累和

i=0nC(n,i)=2n

奇偶累和

0n(1)iC(n,i)=[n=0]

C()

我们熟知的有

i=1n1=n=C(n,1)i=1nj=i+1n1=n(n1)2

更一般的

...1=C(n,k)(k)                    

 C(n,i)

iC(n,i)

=in!i!(ni)!

=n!(i1)!(ni)!

=n(n1)!(i1)!(ni)!

=nC(n1,i1)

同理的

i(i1)C(n,i)=n(n1)C(n2,i2)

带入还能得到

i2C(n,i)=n(n1)C(n2,i2)+nC(n1,i1)

更一般的,可以表示成

C(i,k)C(n,i)=C(n,k)C(nk,ik)

多组合数相乘型

i=0kC(n,i)C(m,ki)=C(n+m,k)

其实就是两个组合问题的组合,可以直接通过实际意义得到


Lucas定理

C(n,m)modp=C(nmodp,mmodp)C(np,mp)modp

预处理阶乘逆元后,可以用于解决模数较小而n,m较大的组合数问题


前缀和

i=0n(im)=(n+1m+1)

由递推式(im)=(i1m)+(i1m1)容易迭代发现

 

S(n,m)=i=0mC(n,i)

S(n,m)+S(n,m+1)

=i=0m(C(n,i)+C(n,i+1))+C(n,0)

=C(n+1,i+1)+C(n,0) (带入递推公式)

=S(n+1,m+1)

S(n,m)+S(n,m+1)=2S(n,m+1)C(n,m+1)

S(n,m)=2S(n1,m)C(n1,m)

(待补。。。)