zoukankan      html  css  js  c++  java
  • 关于Lucas定理、多项式Exp的一些思考

    Lucas定理

    Lucas定理的证明:

    (C_n^m=C_{ n \% P }^{ m\%P} C_{n/P}^{m/P} (mod P) ,P为质数)

    [C_n^m=frac{n(n-1)...(n-m+1)}{m(m-1)...*2*1} ]

    (m'=lfloor frac{m}{P} floor * P,n'=n-m\%P)

    [C_n^m=frac{n(n-1)...(n'+1)}{m(m-1)...(m'+1)}*frac{n'(n'-1)...(n-m+1)}{m'(m'-1)...1} ]

    (将左边的分式中每一个因式都模上P(因为分母每一个因式都与P互质),发现它就等于C_{n\%P}^{m\%P})

    (然后发现右式分子分母中非P的倍数的项可以约去,只剩P的倍数项,然后再上下同除P,就会变成C_{n'/P}^{m'/P})

    (又因为m'/P=m/P,而当C_{n\%P}^{m\%P}非0时n'/P=n/P,所以最终式子变成了C_{n/P}^{m/P})

    (注意P为质数这个条件很重要,不然分子分母中非P的倍数的项就不能模P,也不能约去了)

    举个例子:

    (P=3)

    (C_{11}^8=frac{11*10...*4}{8*7...*1}=frac{11*10}{8*7}*frac{9*8...*5}{6*5...*1}=frac{2*1}{2*1}*frac{9*6}{6*3}=frac{2*1}{2*1}*frac{3*2}{2*1}=C_2^2C_3^2)

    多项式Exp

    关于Exp做快速幂的疑问:用Exp计算(f^{mod}(x))的时候,先求ln,然后每一项系数乘以mod,这样多项式的值就变成了0,然后再exp,那么得到的(f^{mod}(x)=1) 。但是这样不合逻辑,因为如果(f(x)=x+1) ,那么(f^{mod}(x)[x^{mod}]=C_{mod}^{mod}=1) ,并不会等于0。

    但仔细想想发现并不是这样,我们回忆一下求ln的过程,最后需要积分,而积分时正好就会在(x^{mod}) 项上乘一个(frac{1}{mod}) ,然后我们再给每一项乘一个(mod) ,那么(x^{mod}) 项上就不是0而是1了,这样Exp出来的结果就不会有问题。

    有一个结论:

    (mod)为质数,(f(x))为一个多项式,那么在模(mod)意义下:

    (f^{mod}(x)[x^0]=(f(x)[x^0])^{mod})

    (f^{mod}(x)[x^{mod}]=(f(x)[x^1])^{mod})

    (f^{mod}(x)[x^{k*mod}]=(f(x)[x^k])^{mod})

    (其他非mod 的倍数次方项均为0)

    可以用排列组合的方法证明。

    同样的,我们可以用这个结论来证明Lucas定理:

    设模数为(P)

    [C_n^m=(1+x)^n[x^m] ]

    [(1+x)^n=(1+x)^{n\% P}[(1+x)^{n/P}]^P ]

    [=(sum_{i=0}^{n\%P}C_{n\%P}^{i}x^i)(sum_{i=0}^{n/P}C_{n/P}^{i}x^{iP}) ]

    [=sum_{i=0}^{n}C_{n/P}^{i/P}C_{n\%P}^{i\%P}x^i ]

    取其([x^m])次项,则有(C_n^m=C_{ n \% P }^{ m\%P} C_{n/P}^{m/P} (mod P))

  • 相关阅读:
    Ubuntu 16 编译装python2.7
    配置ubunto 流量使用限制 python 实现简单 http server
    vnstat 流量统计 并附带一个小 php 查看流量的页面
    ubunto 免输入密码 登录 putty ssh-keygen
    nes 红白机模拟器 第5篇 全屏显示
    arm 添加 samb 文件共享
    arm 添加 ftp server 之 bftpd
    Tga图片格式分析以及程序实现
    领导力:刘邦的管理之道
    AS3:辨析ROLL_OVER与MOUSE_OVER,ROLL_OUT与MOUSE_OUT
  • 原文地址:https://www.cnblogs.com/lishuyu2003/p/12120150.html
Copyright © 2011-2022 走看看