lucas定理(学习笔记)
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定理(学习笔记)相关推荐
- lucas定理 学习笔记
lucas定理 学习笔记 文章目录 lucas定理 学习笔记 介绍 combination 题目描述 输入格式 输出格式 样例 输入样例1 输出样例2 分析 code 扩展lucas 介绍 lucas ...
- Lucas 定理学习笔记
Lucas 定理 Lucas 定理用于求解大组合数取模的问题,其中模数必须为素数.正常的组合数运算可以通过递推公式求解(详见排列组合),但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过 ...
- 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 ...
- [MIT]微积分重点 第十七课 六函数、六法则和六定理 学习笔记
1.六函数 积分 六函数 导数 xn+1/(n+1)x^{n+1}/(n+1)xn+1/(n+1) xnx^nxn nxn−1nx^{n-1}nxn−1 −cosx-\cos x−cosx sin ...
- 二部图Hall定理学习笔记
离散数学PPT: Hall定理 定理(Hall定理) 设二部图G=<V1,V2,E>中,|V1|≤|V2|. G中存在从V1到V2的完备匹配当且仅当V1中任意k 个顶点至少与V2中的k个顶 ...
- Burnside引理和Polya定理学习笔记
前言 求·······的方案数 循环同构算一种 一脸懵逼 (于是我觉得系统的学一遍Burnside引理和Polya定理) 正文 置换 置换的概念 对于一个排列aia_iai 我们想成iii输进去会出 ...
- 基尔霍夫矩阵矩阵树定理学习笔记
背景: 好多东西没学. 勇士被快船惊天大逆转!!! 快船NBNBNB. 紧接着下午打球水杯被搞烂了......... 正题: Part1Part1Part1行列式: 对于一个n∗nn*nn∗n的矩阵A ...
- 傅里叶变换与香农采样定理学习笔记
1. 傅里叶变换入门 无公式,最直观了解什么是傅里叶变换? 傅里叶分析之掐死教程(完整版)更新于2014.06.06 数学公式基础推导出傅里叶变换与反变换 纯干货数学推导_傅里叶级数与傅里叶变换_Pa ...
- 中国剩余定理(CRT)孙子定理学习笔记
在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?"这个问题称为" ...
- 洛谷4455 [CQOI2018]社交网络 (有向图矩阵树定理)(学习笔记)
sro_ptx_orz qwq算是一个套路的记录 对于一个有向图来说 如果你要求一个外向生成树的话,那么如果存在一个\(u\rightarrow v\)的边 那么\(a[u][v]--,a[v][v] ...
最新文章
- 5个短小精悍的 Python 趣味脚本,太赞了,非常适合小白上手!
- 管理者如何打造一个有执行力的团队?
- 实现账号在一端登入_跟我学spring security 基于数据库实现一个基本的登入登出...
- SpringBoot_web开发-简介
- python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)
- mysql第七章课后答案_mysql核心内幕第七章-查询解析与优化器
- linux没有pigz指令,Linux命令手册
- mysql引擎和事务
- WebGoat系列实验Buffer Overflows Code Quality Concurrency
- redis 下载安装 python 操作redis django 连接redis
- 2020浙江大学软件学院软件工程考研经验分享
- Hibernate使用详解(一)
- osg绳索_绳索:理论与实践
- java listview用法_ListView的使用(一)
- JAVA的Stream
- 大数据毕设 航空公司客户价值分析
- linux gpu 风扇速度,如何在无头节点上调整NVIDIA GPU风扇速度?
- 游戏建模师要什么学历?
- 路缘石滑模机脱离预制作业追赶施工效率
- 前端10个灵魂拷问 吃透这些你就能摆脱初级前端工程师!