卢卡斯定理(模数较小,且是质数)

式子C(m,n)=C(m/p,n/p)*C(m%p,n%p)%p

至于证明(我也不会QAQ,只要记住公式也该就好了)。

同时卢卡斯定理一般用于组合数取模上

1.首先当组合数取得模较大时,我们可以使用卢卡斯,也可以直接求

(只要数据范围不是很大,还能开得起数组,我们可以直接预处理出阶乘,逆元,需要时O(1)求,当然要是质数,不然只能现求)。

2.当组合数的模很小时,我们只能用卢卡斯,

我们可以发现假如我们照旧求的话,可能有的阶乘直接被消成0了

这个时候直接用阶乘会不准确,那么只能lusca了

3.模数非质数时,例如多个质数相乘,我们先用质因数分解,在用中国剩余定理即可。

 1 ll pow(ll x,ll y,ll mod)
2 {
3 ll ans=1;
4 if(y==0)return 1;
5 while(y)
6 {
7 if(y&1)ans=ans*x%mod;
8 x=x*x%mod;
9 y>>=1;
10 }
11 return ans%mod;
12 }
13 ll C(ll x,ll y,ll mod)
14 {
15 if(y>x)return 0;
16 if(y==0)return 1;
17 return jie[x]*pow(jie[y]*jie[x-y]%mod,mod-2,mod)%mod;
18 }
19 ll lus(ll x,ll y,ll mod)
20 {
21 if(y>x)return 0;
22 if(y==0)return 1;
23 return lus(x/mod,y/mod,mod)*C(x%mod,y%mod,mod)%mod;
24 }

卢卡斯模板

一道例题

中国剩余定理:

设m1,m2,m3,m4....mk两两互素,则同余方程组

x≡a1(mod m1)

x≡a2(mod m2)

x≡a3(mod m3)

x≡a4(mod m4)

x≡ak(mod mk)

一定有解,x≡(a1*M1*M1^(-1)+a2*M2*M2^(-1)+....)(mod M)

其中M=m1*m2*m3*....mk,Mi=M/mi,Mi^(-1)是Mi在模mi意义下的逆元。

至于证明自己可以在书上看了。。。。

代码

 1 void exgcd(ll a,ll b,ll &x,ll &y)
2 {
3 if(b==0){
4 x=1;y=0;return ;
5 }
6 exgcd(b,a%b,x,y);
7 ll z=x;x=y;y=z-(a/b)*y;
8 return ;
9 }
10 ll sum;ll len=1;
11 void CRT()
12 {
13 for(ll i=0;i<su.size();++i)
14 {
15 len*=su[i];
16 //printf("%lld\n",len);
17 }
18 for(ll i=0;i<su.size();++i)
19 {
20 M[i]=len/su[i];
21 }
22 for(ll i=0;i<su.size();++i)
23 {
24 ll x,y;
25 exgcd(M[i],su[i],x,y);
26 x=(x+su[i])%su[i];
27 sum=(sum+ans[i]*M[i]*x)%len;
28 //printf("sum=%lld ans=%lld M=%lld x=%lld\n",sum,ans[i],M[i],x);
29 }
30 printf("%lld\n",sum);
31 }

m=∏ni=1mi,Mi=m/mi

m=∏ni=1mi,Mi=m/mim=∏ni=1mi,Mi=m/mi

m=∏ni=1mi,Mi=m/mi

卢卡斯定理&&中国剩余定理的更多相关文章

  1. 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理

    题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...

  2. 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理

    P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...

  3. 【bzoj1951】[Sdoi2010]古代猪文 费马小定理+Lucas定理+中国剩余定理

    题目描述 求  $g^{\sum\limits_{k|n}C_{n}^{\frac nk}}\mod 999911659$ 输入 有且仅有一行:两个数N.G,用一个空格分开. 输出 有且仅有一行:一个 ...

  4. Ceizenpok’s formula Gym - 100633J 扩展Lucas定理 + 中国剩余定理

    http://codeforces.com/gym/100633/problem/J 其实这个解法不难学的,不需要太多的数学.但是证明的话,我可能给不了严格的证明.可以看看这篇文章 http://ww ...

  5. hdu 5446 Unknown Treasure Lucas定理+中国剩余定理

    Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  6. Codeforces Round #460 (Div. 2).E 费马小定理+中国剩余定理

    E. Congruence Equation time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  7. BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理

    我们枚举第一个经过的坏点,然后DP即可. 状态转移方程不是难点,难点在于组合数的处理. 将狼踩尽的博客中有很详细的证明过程,但是我只记住了结论 $n=a_1 * p^k+a_2*p^k-1...$ $ ...

  8. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  9. 《孙子算经》之"物不知数"题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

随机推荐

  1. Java枚举类、注解和反射

    本文主要介绍的是枚举类,注解和反射.还有一些基础知识:static,基本数据类型,运算符优先级放在文中,以便查阅复习. 其中牵扯到泛型的部分,可参考本人的另一篇博客:(Collection, List ...

  2. Vue中的MVVM

    MVVM(Model View VueModel) View层: 视图层 在我们前端开发中,通常就是DOM层 主要的作用就是给用户展示各种信息 Model层: 数据层 数据可能是我们固定的死数据,更多 ...

  3. Git 系列教程(9)- 打标签

    打标签 一般会给提交历史打个标签,方便后续进行筛选.查看 列出标签 可带上可选的 -l 选项 --list $ git tag v1.0 v2.0 这个命令以字母顺序列出标签 可以按照特定的模式查找标 ...

  4. 如何理解PaaS平台,与SaaS、IaaS有什么区别?

    我们经常会看到SaaS.PaaS.IaaS,但总是会摸不着头脑,有的人甚至会以为是恐怖组织的代号.其实,无论是SaaS.PaaS还是IaaS,都代表的是某一种服务,比如SaaS的含义为"软件 ...

  5. [DB] Spark Streaming

    概述 流式计算框架,类似Storm 严格来说不是真正的流式计算(实时计算),而是把连续的数据当做不连续的RDD处理,本质是离散计算 Flink:和 Spark Streaming 相反,把离散数据当成 ...

  6. [刷题] 219 Contains Duplicate II

    要求 给出整型数组nums和整数k,是否存在索引i和j,nums[i]==nums[j],且i和j之间的差不超过k 思路 暴力解法(n2) 建立最长为k+1的滑动窗口,用set查找窗口中是否有重复元素 ...

  7. 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。

    高分屏打开软件界面模糊?不会设置太浪费 2017-08-31 19:37 抹又重彩 现在有好多朋友都喜欢并买了高分屏笔记本电脑.高分屏笔记本就是配有高分辨率屏幕的笔记本.为了给用户带来更好的视觉体验, ...

  8. 【转载】认识SSD的SATA、mSATA 、PCIe和M.2四种主流接口

    认识SSD的SATA.mSATA .PCIe和M.2四种主流接口 2018-09-25 • 工具 • 评论关闭 认识SSD的SATA.mSATA .PCIe和M.2四种主流接口

  9. C++ Error 个人笔记(live)

    1.error: invalid conversion from 'char' to 'char*' [-fpermissive] 原因: 把一个字符型的变量赋值给了一个字符型的指针 我的原因: 把 ...

  10. shell基础之综合练习

    0.脚本一键完成下面所有操作1.准备2台centos7系统的服务器,远程互相免密登录,以下所有题目过程中开启防火墙2.给1号机和2号机使用光盘搭建本地yum源(永久生效)3.给服务器1添加2块硬盘,1 ...