题目链接

->扩展Lucas

//求C_n^k%m
#include <cstdio>
typedef long long LL;LL FP(LL x,LL k,LL p)
{LL t=1ll;for(; k; k>>=1,x=x*x%p)if(k&1) t=t*x%p;return t;
}
void Exgcd(LL a,LL b,LL &x,LL &y)
{if(!b) x=1ll, y=0ll;else Exgcd(b,a%b,y,x),y-=a/b*x;
}
LL Inv(LL a,LL mod)
{
//  if(!a) return 0ll;//?LL x,y; Exgcd(a,mod,x,y);x=(x%mod+mod)%mod;//!
//  if(!x) x=mod;return x;
}
LL Fact(LL n,LL pi,LL pk)//factorial Calc n!%(pi^ki) (不计算pi因子 计算C()时提出)
{if(!n) return 1ll;LL ans=1ll;if(n/pk)//n>=pk{for(LL i=2; i<=pk; ++i)//每pi^ki一循环的部分 if(i%pi) (ans*=i)%=pk;ans=FP(ans,n/pk,pk);//一共n/pk个循环 }for(LL i=2; i<=n%pk; ++i)//pi^ki循环之外的部分 mod pk意义下所以i=2 to n%pk即可 if(i%pi) (ans*=i)%=pk;return ans*Fact(n/pi,pi,pk)%pk;//[n/pi]!部分
}
LL C(LL n,LL m,LL mod,LL pi,LL pk)//Calc C_n^m%(pi^ki)
{if(n<m) return 0ll;LL a=Fact(n,pi,pk),b=Fact(m,pi,pk),c=Fact(n-m,pi,pk),k=0ll;//k:质因子pi的个数 for(LL i=n; i; i/=pi) k+=i/pi;//计算x!中pi因子个数:k=f(x)=f(x/pi)+x/pi for(LL i=m; i; i/=pi) k-=i/pi;for(LL i=n-m; i; i/=pi) k-=i/pi;LL ans=a*Inv(b,pk)%pk*Inv(c,pk)%pk*FP(pi,k,pk)%pk;return ans*(mod/pk)%mod*Inv(mod/pk,pk)%mod;//CRT合并
}int main()
{LL n,k,mod,ans=0ll;scanf("%I64d%I64d%I64d",&n,&k,&mod);for(LL now=mod,i=2; i<=mod; ++i)if(!(now%i)){LL pk=1ll;while(!(now%i)) pk*=i, now/=i;(ans+=C(n,k,mod,i,pk))%=mod;}printf("%I64d",ans);return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/8453934.html

Codeforces.100633J.Ceizenpok's formula(扩展Lucas)相关推荐

  1. 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)

    J. Ceizenpok's formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  2. [学习笔记]扩展LUCAS定理

    可以先做这个题[SDOI2010]古代猪文 此算法和LUCAS定理没有半毛钱关系. [模板]扩展卢卡斯 不保证P是质数. $C_n^m=\frac{n!}{m!(n-m)!}$ 麻烦的是分母. 如果互 ...

  3. Lucas定理与扩展Lucas

    之前看了乘法逆元(详见除法取模与逆元),发现不能处理不互质的情况,于是去找方法,最后找到了Lucas定理... 虽然与期待中的不一样,但是还是非常有用的. (1)Lucas定理: 若p为素数,则有: ...

  4. Lucas定理扩展Lucas

    Lucas定理 求解 C n m m o d    p C_n^m\mod p Cnm​modp (p为素数) 蒟蒻不会证明,记着递推公式就好=_= L u c a s ( n , m ) = C ( ...

  5. BZOJ 4338 糖果(扩展Lucas定理+CRT)

    题目链接:BZOJ 4338 题目大意:用数字1~k填一个n*m的表格,每种数字可用任意次,要求每行数字1~m列单调不减,任意两行不完全相同,求方案数对P取模的值. 题解:扩展Lucas+CRT模板题 ...

  6. [BZOJ4338][BJOI2015]糖果(扩展Lucas)

    先求出式子$P_{C_{K+m-1}^{m}}^{n}$,然后对于排列直接$O(n)$求解,对于组合用扩展Lucas求解. 但这题数据并没有保证任何一个模数的质因子的$p^k$在可线性处理的范围内,于 ...

  7. 专题·Lucas定理【including Lucas定理,扩展Lucas

    初见安~这里是数论专题(6)[详见数论专栏 本篇有前置知识点需要掌握,建议先了解下:费马小定理,中国剩余定理,乘法逆元 一.Lucas定理 Lucas定理用于求解的组合数取模的问题.其中p为质数. 组 ...

  8. [BZOJ]2142 礼物 扩展Lucas

    2142: 礼物 Time Limit: 10 Sec   Memory Limit: 259 MB Submit: 1788   Solved: 748 [ Submit][ Status][ Di ...

  9. 扩展Lucas定理 扩展Lucas板子

    题意概述:多组询问,给出N,K,M,要求回答C(N,K)%M,1<=N<=10^18,1<=K<=N,2<=M<=10^6 分析: 模数不为质数只能用扩展Lucas ...

  10. bzoj 4830: [Hnoi2017]抛硬币 [范德蒙德卷积 扩展lucas]

    4830: [Hnoi2017]抛硬币 题意:A投a次硬币,B投b次硬币,a比b正面朝上次数多的方案数,模\(10^k\). \(b \le a \le b+10000 \le 10^{15}, k ...

最新文章

  1. 面试官:你能聊聊高并发下的接口幂等性如何实现吗?
  2. 读取Assets中的文件数据
  3. 数据库除关系运算符执行过程详解
  4. PAT_B_1008_Java(20分)
  5. [牛客数据库SQL实战] 11~20题及个人解答
  6. 无监督学习才不是“不要你管”
  7. MVC Remote属性验证
  8. $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
  9. JavaScript编写计算器-《JavaScript王者归来》读书笔记1
  10. 什么是登录Token
  11. 下载Youtube单个视频和播放列表的方法详细教程
  12. 2021-2027全球与中国陶瓷基板白板市场现状及未来发展趋势
  13. 约会Rendezvous
  14. Android App的设计架构:MVC,MVP,MVVM与架构经验谈
  15. Spring系列之依赖注入的三种方式
  16. excel使用教程_Excel 有多强大?你用 Excel 做的最酷的事情是什么?
  17. 经典游戏服务器端架构
  18. 2020-08-11
  19. 半包、全包、套餐、整装该如何选择?
  20. VDO-SLAM :一种动态目标感知的视觉SLAM系统

热门文章

  1. 帆软动态分页之嵌套自定义参数据选择行数分页
  2. 帆软复选框选中并打印(按某种格式打印)数据分析、报填可用
  3. 小程序商店刷榜_微信小程序店铺如何做引流,带来转化?
  4. uses-sdk标签详解
  5. GO随笔-Web简读
  6. 旅游大数据:从投资决策到分析工作的常态化
  7. Aspose.Words从零创建OOXML图表
  8. IE浏览器中用Firebug调试网站的方法
  9. 批处理转成可执行文件的软件
  10. 注意细节:Javascript中的变量作用域