zoukankan      html  css  js  c++  java
  • lucas定理和组合数学

    自湖南长沙培训以来的坑。。。一直未填,今天把这个问题解决掉。

    参考:

    1.http://www.cnblogs.com/Var123/p/5523068.html

    2.http://blog.csdn.net/qzh_1430586275/article/details/51893154

    3.http://blog.csdn.net/check_check_check/article/details/52101467

    一、lucas定理的定义

    (当且仅当p为质数)

    很简短,下面看看应用和相关题目。

    二、lucas定理的应用

    1、[bzoj4591][Shoi2015][超能粒子炮·改]

    题目描述:求 C(n,0)+C(n,1)+...+C(n,k)mod2333

    推到过程:

    易得,

    原式=C(n/2333,0)C(nmod2333,0)+C(n/2333,0)C(nmod2333,1)+...+C(n/2333,k/2333)C(nmod2333,kmod2333)   mod 2333

    也就是将原式中的各个mod 2333项拆分成两项再总体mod 2333

    同类项合并,分两种部分考虑:
    设k=k1*2333+k2 (0≤k1,k2)
    1)对于k1部分
    先考虑k1=0的情况,可以得出这些乘积的各个首项是C(n/2333,0),将其提出得到C(n/2333,0)*∑C(n%2333,i)(其中i∈[0,2333])
    考虑k1=1的情况,可得C(n/2333,1)*∑C(n%2333,i)(其中i∈[0,2333])
    考虑k1=2的情况,可得C(n/2333,2)*∑C(n%2333,i)(其中i∈[0,2333])
    ···  ···  ···  ···  ···  ···
    提公因式→→→∑C(n/2333,j)*∑C(n%2333,i)(其中i∈[0,2333],j∈[0,k1))
    重复3遍
    ∑C(n/2333,j)*∑C(n%2333,i)(其中i∈[0,2333],j∈[0,k1))
    ∑C(n/2333,j)*∑C(n%2333,i)(其中i∈[0,2333],j∈[0,k1))
    ∑C(n/2333,j)*∑C(n%2333,i)(其中i∈[0,2333],j∈[0,k1))
    吼,各位就等了,看看k2部分吧
    2)对于k2部分
    原式=C(n/2333,k1)*C(n%2333,0)+C(n/2333,k1)*C(n%2333,1)+······+C(n/2333,k1)*C(n%2333,k%2333)
    =C(n/2333,k1)*(∑C(n%2333,i))(其中i∈[0,k%2333])
    综上,ans=∑C(n/2333,j)*∑C(n%2333,i)(其中i∈[0,2333],j∈[0,k1))+C(n/2333,k1)*(∑C(n%2333,i))(其中i∈[0,k%2333])
     
    说了这么多,那么这个定理的用法是什么?
    显然是递归求解组合数的模数咯~
     

    所以对于这道题,我们先预处理出一个S(n,k)=∑C(n,i) (i∈[0,k]) (当然最后都是mod p意义下的),ans=S(n%2333,2332)*(∑C(n/2333,j)) (j∈[0,k1)) + C(n/2333,k1)*S(n%2333,k%2333)

    ans中的S()一定可以用二维的东西在规定时空内求出,而∑C(n/2333,j)就是我们超能粒子炮`改的子问题,递归求解即可,另,C(n/2333,k1)也可以用lucas定理递归来解

    于是这道题就口头ac了。

  • 相关阅读:
    iOS 组件化方案
    iOS 核心动画概览
    iOS @字面量
    iOS id 和 instancetype 的区别
    C++ 中的 const
    iOS 开发资料
    iOS 架构-App组件化开发
    iOS 知名大牛的一些博客
    iOS 键盘 隐藏系统的 toolBar
    iOS UIView 单独设置一个角为圆角,两个 三个角也行
  • 原文地址:https://www.cnblogs.com/keshuqi/p/6275356.html
Copyright © 2011-2022 走看看