$exLucas$学习笔记
本来不打算写了的,,,但是感$jio$理解起来还是有点儿难度的来着,,,$so$还是瞎写点儿趴$QAQ$
$exLucas$主要有三步:
1)唯一分解$mod$并预处理$p^{k}$以内的阶乘
2)计算组合数并计算$p$的个数
3)用$crt$合并答案
$umm$大概具体港下,,,$QAQ$
就首先拆下,$mod=\prod_{i=1}^{m} p_{i}^{c_i}$
然后对组合数,$\binom{n}{m}=\frac{n!}{m!\cdot (n-m)!}$,对每个$p_{i}^{c_i}$做一遍,最后用$crt$就好
具体来说,首先显然考虑的是对$n!$,$m!$,$(n-m)!$质因数分解,但是这儿要注意的是显然$p$的倍数的存在会导致一些乱七八糟的存在,所以对$p$的倍数单独处理下
对每个$p$,首先搞出$n!$,$m!$,$(n-m)!$内分别有多少个$p$的倍数,设数量为$f[i]$,则有$f[i]=f[i/p]+i/p$,听起来有点儿像$Lucas$,,,?大概意会下,就说首先这个范围内会有i/p个,但要注意的是有可能存在麻油被赶尽杀绝的,,,比如,$p^{2}$,$p^{3}$这样儿的,$so$还要继续做下去,就是$f[i/p]$.然后就可以求出,$p$的倍数有$f_{n}-f_{m}-f_{n-m}$个,这个单独快速幂下
然后对于剩下的,因为$x\cdot p+y\equiv y$,所以考虑每$p^c$个分一组,就只要做出一组,剩下的都一样儿,矩阵快速幂就好
最后$crt$合并下就欧克辣
综上,$exLucas$主要需要的就是$exgcd$和$crt$,会了这两个之后再尝试理解下打下代码应该还是麻油太难的$QwQ$
放下练手题,,,
$tbc.$
($umm$我知道讲得还是不太清楚,,,等有时间$upd$下有条理地梳理下$exLucas$的步骤趴$QwQ$
随机推荐
- phpexecl
<?phpnamespace Admin\Controller;use Think\Controller;class InoutController extends Controller { p ...
- java根据年月获取当前月的每一天日期
public static List<String> getDayByMonth(int yearParam,int monthParam){ List list = ne ...
- BLOB类型对应Long binary,CLOB对应Long characters
BLOB类型对应Long binary,CLOB对应Long characters
- 2019-9-30-WPF-运行时迁移-EF-Core-数据库
title author date CreateTime categories WPF 运行时迁移 EF Core 数据库 lindexi 2019-09-30 20:19:16 +0800 2019 ...
- macOS上搭建RabbitMQ+MQTT服务器
1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...
- 解析xml的方式
1.DOM 理论:将标记文档语言一次性加载进内存,在内存中形成DOM树. 优点:操作方便,可以对文档进行CRUD(增删改查)操作,适用于服务端操作 缺点:占内存,不适用与手机,智能家居等内存容量小的设 ...
- Python--day49--ORM框架SQLAlchemy之relationship的使用(有时间要从新看,这里状态不好,没有仔细听)
小贴士: 迭代器:只有在循环的时候才一个一个往外拿 relationship
- Hibernate @OneToOne懒加载实现解决方案
在hibernate注解(三)中,我提高过一对一(@OneToOne)懒加载失效的问题.虽然给出了解决方法,但并没有给出完整的解决方案.今天我专门针对该问题进行讨论.至于懒加载失效的原因,在之前的文章 ...
- 2018-7-31-C#-判断两条直线距离
title author date CreateTime categories C# 判断两条直线距离 lindexi 2018-07-31 14:38:13 +0800 2018-05-08 10: ...
- P1041 查找元素
题目描述 现在告诉你一个长度为 \(n\) 的有序数组 \(a_1, a_2, ..., a_n\) ,以及 \(q\) 次询问,每次询问会给你一个数 \(x\) ,对于每次询问,你需要确定在数组中是 ...