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] ...
最新文章
- 083 HBase的完全分布式的搭建与部署,以及多master
- 技术图文:浅析 C# Dictionary实现原理
- 微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量
- 技术领导力实战笔记一
- matlab实现BCC异或,C#编程之C# BCC异或校验法
- .NET 6 Preview 6 正式发布: 关注网络开发
- QuickPart应用系列
- Android访问数据库(SQL Server 和 MySQL)
- 风一样的坑爹哥rust1_醒醒吧,烂大街的“北欧风”根本不实用!
- 服务器访问RabbitMQ出现 User can only log in via localhost
- 数据科学常用Python库介绍--Numpy、Scipy、Pandas、Matplotlib、Plotly、SciKit-Learn等
- JWT学习(二):Json Web Token JWT的Java使用 (JJWT)
- 联想电脑如何关闭/开启windows自动更新
- ResNet 论文阅读笔记
- 〖金融帝国实验室〗(Capitalism Lab)深度研究文章——《浅析CapLab中的通货膨胀与城市GDP》(上)(作者:jiuliumuliao) ​​​​
- 一则软件需求有关的漫画
- Flutter 中由 BuildContext 引发的血案
- springboot+景区停车管理系统 毕业设计-附源码221603
- 利用云服务器和Python架设TCP Server控制ESP8266单片机
- 计算机网络社团章程,社团日常规章制度
热门文章
- Windows Embedded Compact 7可定制化互联网电视
- Encountered a sharing violation while accessing
- 计算机学科专业考研总分,2021计算机专业考研备考常识与考试科目分值
- JavaScript,jQuery,Tomcat,Http,Servlet
- 少壮不努力,老大写程序(kobewry) 经典话语啊
- 神经网络参数量和计算量,神经网络是参数模型吗
- Jsoup如何获得某元素后面的所有兄弟元素
- html怎样使动画循环,html – 如何在css动画循环之间添加延迟
- Spark RDD 论文详解(三)Spark 编程接口
- 计算机网络课程设计——中小型网络工程设计