• 求组合数 C(n,m)


    下面内容转自: http://blog.csdn.net/zengaming/article/details/63681754

    一、求解C(n, m)

    公式一:

    公式二:

    公式二可以这么理解,从n个物品中取m个有2种情况:(1)不取第n个物品,于是从前n-1个中取m个; (2)取第n个物品,于是从前n-1个中取m-1; 所以答案是这两种情况的和

    二、求解C(n, m)%p,p为大质数

    当n,m,p都很大的时候,用公式二肯定不行了,费时间又费内存,这时候要用公式一,问题是取模时怎样可以把除法转化为乘法?

    费马小定理: 若p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1, 即a^(p-1)  ≡ 1 (mod p),所以a^(p-2) ≡ 1/a  (mod p)

    公式三:

    这里求阶乘的时候要一边乘一边取模,求p-2次方的时候要要快速幂

    三、求解C(n, m)%p,p为小质数

    Lucas定理:n,m是非负整数,p是质数,将n,m写成p进制的形式,即:n=(a[k], a[k-1]...., a[0])p,m=(b[k], b[k-1]..., b[0])p,则

    公式四:

    公式五:

    在对上面公式证明之前,我们先证明一下下面这个公式

    公式六:

    证明公式六:

     证明公式五:

    四、范德蒙恒等式

    公式七:

    证明:

    1.

    2.可以这么理解:从n+m个球中取k个球,相当于将球分为两部分,分别有n个球和m个球;结果相当于从n个球中取i个的球情况下,从m个球中取k-i个球,i的范围是[0,k]。

  • 相关阅读:
    2020.08.02 周作业简要题解
    Codeforces Round #659【部分题解】
    2020.07.25 周作业简要题解
    我遇到的前端面试题总结(2018)
    React懒加载组件实现
    关于前端中遇到各种高度宽度的总结
    React+Redux项目实战总结
    Redux学习总结
    css学习笔记
    JS学习笔记
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/7157776.html
Copyright © 2020-2023  润新知