[Codeforces2015ICL,Finals,Div. 1#J]Ceizenpok's formula(扩展Lucas定理+中国剩余定理)
来源:互联网 发布:淘宝云购 编辑:程序博客网 时间:2024/05/29 17:45
题目描述
传送门
题解
扩展Lucas定理+中国剩余定理模板题。
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long longLL n,m,MOD,ans;LL fast_pow(LL a,LL p,LL Mod){ LL ans=1LL; for (;p;p>>=1,a=a*a%Mod) if (p&1) ans=ans*a%Mod; return ans;}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 a=A,b=Mod,x=0LL,y=0LL; exgcd(a,b,x,y); x=((x%b)+b)%b; if (!x) x+=b; return x;}LL Mul(LL n,LL pi,LL pk){ if (!n) return 1LL; LL ans=1LL; for (LL i=2;i<=pk;++i) if (i%pi) ans=ans*i%pk; ans=fast_pow(ans,n/pk,pk); for (LL i=2;i<=n%pk;++i) if (i%pi) ans=ans*i%pk; return ans*Mul(n/pi,pi,pk)%pk;}LL C(LL n,LL m,LL Mod,LL pi,LL pk){ if (m>n) return 0LL; LL a=Mul(n,pi,pk),b=Mul(m,pi,pk),c=Mul(n-m,pi,pk); LL k=0LL,ans; for (LL i=n;i;i/=pi) k+=i/pi; for (LL i=m;i;i/=pi) k-=i/pi; for (LL i=n-m;i;i/=pi) k-=i/pi; ans=a*inv(b,pk)%pk*inv(c,pk)%pk*fast_pow(pi,k,pk)%pk; return ans*(Mod/pk)%Mod*inv(Mod/pk,pk)%Mod;}int main(){ scanf("%I64d%I64d%I64d",&n,&m,&MOD); for (LL x=MOD,i=2;i<=MOD;++i) if (x%i==0) { LL pk=1LL; while (x%i==0) pk*=i,x/=i; ans=(ans+C(n,m,MOD,i,pk))%MOD; } printf("%I64d\n",ans);}
1 0
- [Codeforces2015ICL,Finals,Div. 1#J]Ceizenpok's formula(扩展Lucas定理+中国剩余定理)
- 【Codeforces2015ICL,Finals,Div. 1#J】Ceizenpok's formula(扩展Lucas定理+中国剩余定理)
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理+中国剩余定理)
- codeforces 100633J. Ceizenpok’s formula (扩展Lucas定理+中国剩余定理)
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)
- [BZOJ2142]礼物(扩展Lucas定理+中国剩余定理)
- [BZOJ2142]-扩展Lucas+中国剩余定理
- [BZOJ2142]礼物-扩展lucas定理-中国剩余定理
- hdu-5446(中国剩余定理+lucas)
- hdu5446 lucas+中国剩余定理
- HDU 5446 Unknown Treasure(Lucas定理+中国剩余定理)
- hdu 5446 Unknown Treasure(Lucas定理+中国剩余定理)
- HDU 4373 Mysterious For(Lucas 定理 + 中国剩余定理)
- HDU 4373 Mysterious For(Lucas定理、中国剩余定理)
- HDU 5446 Unknown Treasure(Lucas定理+中国剩余定理)
- hdu 5446 Unknown Treasure (Lucas定理+中国剩余定理)
- bzoj 1951(Lucas定理+中国剩余定理)
- 【总结】lucas 定理 + 中国剩余定理
- iOS之UIApplecation和appdelegate的使用
- Verilog HDL学习笔记1
- 追思周有光:我们为什么如此爱一个老人?
- [嵌入式开发入门]4412开发板从零建立Linux最小系统
- 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形...)
- [Codeforces2015ICL,Finals,Div. 1#J]Ceizenpok's formula(扩展Lucas定理+中国剩余定理)
- slab源码分析--setup_cpu_cache函数
- 使用appledoc生成说明文档
- C# DataTable的构建
- 441. Arranging Coins
- AR移动端缩放和旋转
- VIM 必看操作知识!
- 解决Eclipse/MyEclipse中js中文乱码
- C++ string.find()返回值问题