zoukankan      html  css  js  c++  java
  • 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])  mod p 相同

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

    证明: 

    首先我们注意到 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) 

    注意!这里一定要是质数。

    (为什么要是质数呢?

    因为(1+x)^p=1^p+c(p,1)x+c(p,2)x^2+...+x^p

    但p为质数时c(p,1),c(p,2),...,c(p,p-1) 模p都为0

    所以(1+x)^p == 1+x^p  (mod p)

     对 模p 而言,接下来是让我惊叹的一个构造证明,证明只有一个公式如下:

       上式左右两边的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) 

    perfect!

  • 相关阅读:
    项目原型设计
    项目选题报告 (基于云的胜利冲锋队)
    基于云的胜利冲锋队 团队团队展示
    团队作业第三次-项目原型设计
    团队作业第二次-项目选题报告
    团队作业第一次-团队团队展示
    周测、代码
    异常
    5.13重点
    接口
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/5080550.html
Copyright © 2011-2022 走看看