1. lucas定理
 lucas定理是用来求 c(n,m) mod p,p为素数的值。
 C(n, m) % p = C(n / p, m / p) * C(n % p, m % p) % p
 也就是Lucas(n, m) % p = Lucas(n / p, m / p) * C(n % p, m % p) % p
 n = n % p, m = m = m % p
 C(n % p, m % p) % p = C(n, m) % p
 C(n, m)%p = n! / (m ! * (n - m )!) % p
 化除为乘
 n! / (m ! * (n - m )!) % p = n! / (n - m)! * m!的逆元 % p
2.逆元
 1).什么是逆元
 当求解公式(a / b) % m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:
 设c是b的逆元,则有b * c ≡ 1(mod m);
 则(a / b) % m = (a / b) * 1 % m = (a / b) * b * c % m = a * c(mod m);
 2).逆元的求法
 ①费马小定理:如果p是一个质数,而整数a不是p的倍数,则有a ^ (p - 1) ≡ 1(mod p)
 所以a的逆元为a^(p - 2)
 ②扩展欧几里得

void gcd(int a,int b,int &d,int &x,int &y)
{if(!b)  { d = a, x = 1, y=0;else {  gcd(b, a % b, d, y, x); y -= x * (a / b);  }
}

3.模板

int fast_pow(int a, int n, int m)
{if(n == 0) return 1;long long ans = 1;int x = fast_pow(a, n / 2, m);ans = (long long)x * x % m;if(n % 2) ans = ans * a % m;return (int) ans;
}int C(int a, int b, int mod)
{if(a < b) return 0;if(a == b) return 1;if(b > a - b) b = a - b;long long ca = 1, cb = 1;for(int i = 0; i < b; i++){ca = (ca * (a - i)) % mod;cb = (cb * (b - i)) % mod;}ca = (ca * fast_pow(cb, mod - 2, mod)) % mod;return (int)ca;
}int lucas(int n, int m, int mod)
{long long ans = 1;while(n && m && ans){ans = (ans * C(n % mod, m % mod, mod)) % mod;n /= mod;m /= mod;}return (int)ans;
}

lucas定理(学习笔记)相关推荐

  1. lucas定理 学习笔记

    lucas定理 学习笔记 文章目录 lucas定理 学习笔记 介绍 combination 题目描述 输入格式 输出格式 样例 输入样例1 输出样例2 分析 code 扩展lucas 介绍 lucas ...

  2. Lucas 定理学习笔记

    Lucas 定理 Lucas 定理用于求解大组合数取模的问题,其中模数必须为素数.正常的组合数运算可以通过递推公式求解(详见排列组合),但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过 ...

  3. lucas定理、拓展lucas定理学习小结

    lucas定理 正题 首先,这玩意就是下面这个式子: C m n % p = C m / p n / p ∗ C m % p n % p % p C_m^n\%p=C_{m/p}^{n/p}*C_{m ...

  4. [MIT]微积分重点 第十七课 六函数、六法则和六定理 学习笔记

    1.六函数 积分 六函数 导数 xn+1/(n+1)x^{n+1}/(n+1)xn+1/(n+1) xnx^nxn nxn−1nx^{n-1}nxn−1 −cos⁡x-\cos x−cosx sin⁡ ...

  5. 二部图Hall定理学习笔记

    离散数学PPT: Hall定理 定理(Hall定理) 设二部图G=<V1,V2,E>中,|V1|≤|V2|. G中存在从V1到V2的完备匹配当且仅当V1中任意k 个顶点至少与V2中的k个顶 ...

  6. Burnside引理和Polya定理学习笔记

    前言 求·······的方案数 循环同构算一种 一脸懵逼 (于是我觉得系统的学一遍Burnside引理和Polya定理) 正文 置换 置换的概念 对于一个排列aia_iai​ 我们想成iii输进去会出 ...

  7. 基尔霍夫矩阵矩阵树定理学习笔记

    背景: 好多东西没学. 勇士被快船惊天大逆转!!! 快船NBNBNB. 紧接着下午打球水杯被搞烂了......... 正题: Part1Part1Part1行列式: 对于一个n∗nn*nn∗n的矩阵A ...

  8. 傅里叶变换与香农采样定理学习笔记

    1. 傅里叶变换入门 无公式,最直观了解什么是傅里叶变换? 傅里叶分析之掐死教程(完整版)更新于2014.06.06 数学公式基础推导出傅里叶变换与反变换 纯干货数学推导_傅里叶级数与傅里叶变换_Pa ...

  9. 中国剩余定理(CRT)孙子定理学习笔记

    在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?"这个问题称为" ...

  10. 洛谷4455 [CQOI2018]社交网络 (有向图矩阵树定理)(学习笔记)

    sro_ptx_orz qwq算是一个套路的记录 对于一个有向图来说 如果你要求一个外向生成树的话,那么如果存在一个\(u\rightarrow v\)的边 那么\(a[u][v]--,a[v][v] ...

最新文章

  1. 5个短小精悍的 Python 趣味脚本,太赞了,非常适合小白上手!
  2. 管理者如何打造一个有执行力的团队?
  3. 实现账号在一端登入_跟我学spring security 基于数据库实现一个基本的登入登出...
  4. SpringBoot_web开发-简介
  5. python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)
  6. mysql第七章课后答案_mysql核心内幕第七章-查询解析与优化器
  7. linux没有pigz指令,Linux命令手册
  8. mysql引擎和事务
  9. WebGoat系列实验Buffer Overflows Code Quality Concurrency
  10. redis 下载安装 python 操作redis django 连接redis
  11. 2020浙江大学软件学院软件工程考研经验分享
  12. Hibernate使用详解(一)
  13. osg绳索_绳索:理论与实践
  14. java listview用法_ListView的使用(一)
  15. JAVA的Stream
  16. 大数据毕设 航空公司客户价值分析
  17. linux gpu 风扇速度,如何在无头节点上调整NVIDIA GPU风扇速度?
  18. 游戏建模师要什么学历?
  19. 路缘石滑模机脱离预制作业追赶施工效率
  20. 前端10个灵魂拷问 吃透这些你就能摆脱初级前端工程师!

热门文章

  1. 华为技术有限公司总裁任正非
  2. Occluded-REID 行人重识别中的遮挡数据集
  3. Android软件开发实例:用客户端写博客
  4. 人工智能前沿——未来AI技术的五大应用领域
  5. CSDN博客和OJ,两种积累编程代码量的方法对比
  6. 用c语言试完成九九乘法口诀表中倒直三角形,
  7. Spring事务管理(应对面试)
  8. echarts——实现3D地图+3D柱状图 效果——粗糙代码记录——技能提升
  9. jquery选择器详细说明
  10. 常用的css特效(一)