Lucas定理

首先给出这个Lucas定理:

 

A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。
则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  modp同余

即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 

 

证明:表示没看懂。。

Lucas定理的一个证明(找的)

无意中看到这么一个定理,wiki上的证明我是看不懂了...

http://en.wikipedia.org/wiki/Lucas%27_theorem 

友情提示:上wiki,先FQ- -||

千辛万苦...终于找到一个我能看懂的证明~

先贴个wiki上的公式:

 

For non-negative integers m and n and a prime p, the following congruence relation holds:


where


and


are the base p expansions of m and n respectively.

 

首先我们注意到 n=(ak...a2,a1,a0)p  =  (ak...a2,a1)p * p + a0

                                                       =  [n/p]*p+a0


                                                    且m=[m/p]+b0

 

只要我们更够证明 C(n,m)=C([n/p],[m/p]) * C(a0,b0)  (mod p)

剩下的工作由归纳法即可完成

 

我们知道对任意质数p:   (1+x)^p  == 1+(x^p)  (mod p) 

注意!这里一定要是质数  ................(为什么)

 

对 模p 而言
Lucas定理

 上式左右两边的x^m的系数对模p而言一定同余(为什么),其中左边的x^m的系数是 C(n,m) 而由于a0和b0都小于p

右边的x^m ( = x^(([m/p]*p)+b0)) 一定是由 x^([m/p]*p) 和 x^b0 相乘而得 (即发生于 i=[m/p] , j=b0 时) 因此我们就有了

 

C(n,m)=C([n/p],[m/p]) * C(a0,b0)  (mod p) 

 

你可能感兴趣的:(cas)