卢卡斯定理&扩展卢卡斯定理
卢卡斯定理
求\(C_m^n~mod~p\)
设\(m={a_0}^{p_0}+{a_1}^{p_1}+\cdots+{a_k}^{p_k},n={b_0}^{p_0}+{b_1}^{p_1}+\cdots+{b_k}^{p_k}\)
则\(C_m^n\equiv\prod{C_{a_i}^{b_i}}(mod~p)\)
扩展卢卡斯定理
好像这也不是什么定理,只是一个计算方法
计算\(C_m^n~mod~p\),其中\(p={p_1}^{q_1}\times{p_2}^{q_2}\times\cdots{p_k}^{q_k}\)时,我们可以先求出\(C_m^n~mod~{p_i}^{q_i}\),然后用CRT合并。
那么怎么计算\(C_m^n~mod~{p_i}^{q_i}\)呢?
\(C_m^n=\frac{m!}{n!(m-n)!}\),我们只需要算出\(m!,{n!}^{-1},{(m-n)!}^{-1}\),然后乘在一起。
zjt大爷:\(n!\)可能在模\({p_i}^{q_i}\)的意义下没有逆元啊,那这就是错的了啊
其实这里求得不是逆元(可能没有逆元),求出来的是\(a\times {p_i}^b(gcd(a,p)=1)\),前面的\(a\)用逆元,后面的次数加加减减一下就好了
问题转换成求\(n!~mod~p^q\)
例如\(n=19,p=3,q=2\):
\[
\begin{align}
&19!\\
=&1\times2\times3\times\cdots\times19\\
=&(1\times2\times4\times5\times7\times8\cdots\times16\times17\times19)\times(3\times6\times9\times12\times15\times18)\\
=&(1\times2\times4\times5\times7\times8\cdots\times16\times17)\times19\times3^6\times(1\times2\times3\times4\times5\times6)\\
=&{(1\times2\times4\times5\times7\times8)}^2\times19\times3^6\times(1\times2\times3\times4\times5\times6)
\end{align}
\]
上面这个式子分为四部分:
第一部分:\({(1\times2\times4\times5\times7\times8)}^2\)。这部分的数不超过\(p^q\)个,可以暴力算
第二部分:\(19\)。这部分的数不超过\(p^q\)个,可以暴力算
第三部分:\(3^6\)。这个在最后处理时求出\(m!,n!,(m-n)!\)分别有多少个\(p\)(设为\(x,y,z\)),则答案要乘上\(p^{x-y-z}\)
第四部分:\(1\times2\times3\times4\times5\times6\)。这个是\(\lfloor\frac{n}{p}\rfloor!\),可以递归处理
卢卡斯定理&扩展卢卡斯定理的更多相关文章
- bzoj2142 礼物——扩展卢卡斯定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2142 前几天学了扩展卢卡斯定理,今天来磕模板! 这道题式子挺好推的(连我都自己推出来了) , ...
- 【知识总结】扩展卢卡斯定理(exLucas)
扩展卢卡斯定理用于求如下式子(其中\(p\)不一定是质数): \[C_n^m\ mod\ p\] 我们将这个问题由总体到局部地分为三个层次解决. 层次一:原问题 首先对\(p\)进行质因数分解: \[ ...
- LG4720 【模板】扩展卢卡斯定理
扩展卢卡斯定理 求 \(C_n^m \bmod{p}\),其中 \(C\) 为组合数. \(1≤m≤n≤10^{18},2≤p≤1000000\) ,不保证 \(p\) 是质数. Fading的题解 ...
- 【学习笔记】扩展卢卡斯定理 exLucas
引子 求 \[C_n^m\ \text{mod}\ p \] 不保证 \(p\) 是质数. 正文 对于传统的 Lucas 定理,必须要求 \(p\) 是质数才行.若 \(p\) 不一定是质数,则需要扩 ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- [学习笔记]扩展LUCAS定理
可以先做这个题[SDOI2010]古代猪文 此算法和LUCAS定理没有半毛钱关系. [模板]扩展卢卡斯 不保证P是质数. $C_n^m=\frac{n!}{m!(n-m)!}$ 麻烦的是分母. 如果互 ...
- 洛谷 P4720 【模板】扩展 / 卢卡斯 模板题
扩展卢卡斯定理 : https://www.luogu.org/problemnew/show/P4720 卢卡斯定理:https://www.luogu.org/problemnew/show/P3 ...
- 【luoguP4720】【模板】扩展卢卡斯
快速阶乘与(扩展)卢卡斯定理 \(p\)为质数时 考虑 \(n!~mod~p\) 的性质 当\(n>>p\)时,不妨将\(n!\)中的因子\(p\)提出来 \(n!\) 可以写成 \(a* ...
- [洛谷P4720] [模板] 扩展卢卡斯
题目传送门 求组合数的时候,如果模数p是质数,可以用卢卡斯定理解决. 但是卢卡斯定理仅仅适用于p是质数的情况. 当p不是质数的时候,我们就需要用扩展卢卡斯求解. 实际上,扩展卢卡斯=快速幂+快速乘+e ...
随机推荐
- vue及Eelement使用过程中遇到的一些问题
在做项目的过程中,目前主要遇到了以下几个问题: 一.样式问题 1.样式中使用scoped的问题: 主要表现在从一个页面跳到另一个页面时,第二个页面的样式不能正确显示,通过刷新才能恢复页面的预定样式. ...
- c语言中字符串数组初始化的一点总结&& c++访问控制的三种方式
char *c[]={"ONE","TWO","THREE","FOUR"}; // c语言中定义了一个字符串数组(也称 ...
- Alpha冲刺阶段评分发布
一班 二班 三班 四班
- html js 表单提交前检测数据
通过使用form的onsibmit来控制是否提交数据 返回值为真是提交,其他不变,示例如下: JS部分 function check() { var newPwd = document.getElem ...
- jmeter内存溢出解决办法
原文:http://blog.51cto.com/xqtesting/2107927 使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在 ...
- 解读event.returnValue和return false
前言 首先我们要清楚returnValue是IE的一个属性,如果设置了该属性,它的值比事件句柄的返回值优先级要高,把它的值设置为false,可以取消发生事件源元素的默认动作:return false就 ...
- Js中instanceof 的用法
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”. ...
- Sublime Text3 配置 NodeJs 开发环境
题外话:使用visual studio开发NodeJs也是很方便,只需要安装插件即可. 本着对Sublime Text3的喜爱,尤其是最近更新后,界面和功能上感觉更nice了,那就配置一发环境吧! ( ...
- Dart语法基础
hello world // Define a function. printNumber(num aNumber) { print('The number is $aNumber.'); // Pr ...
- Hbase数据表解析
demo为表的命名空间,user为表的名字you2个列族,一个为b.一个为o. NAME 为列族名,Replication_SCOPE实现一个远程集群的复制.compression数据压缩的类型 Hb ...