hdu 3037(Lucas定理,大组合数取模)
2015-05-12 23:57
447 查看
先来关于排列组合中 插板法的应用基础:
![](http://img.blog.csdn.net/20150512235933100?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTktfdGVzdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150513000014565?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTktfdGVzdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150512235830946?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTktfdGVzdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150512235844050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTktfdGVzdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所以对于这个问题,我们可以抽象成 将m个球放入n个盒子里的方法数(可以有空的盒子),其中m的范围是0~m
![](http://img.blog.csdn.net/20150513000554832?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTktfdGVzdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所以对于这个问题,我们可以抽象成 将m个球放入n个盒子里的方法数(可以有空的盒子),其中m的范围是0~m
#include<iostream> #include<string> using namespace std; #define lld long long lld Ext_gcd(lld a,lld b,lld &x,lld &y){ if(b==0) { x=1, y=0; return a; } lld ret= Ext_gcd(b,a%b,y,x); y-= a/b*x; return ret; } lld Inv(lld a,int m){ ///求逆元 lld d,x,y,t= (lld)m; d= Ext_gcd(a,t,x,y); if(d==1) return (x%t+t)%t; return -1; } lld Cm(lld n, lld m, lld p) ///组合数学 { lld a=1, b=1; if(m>n) return 0; while(m) { a=(a*n)%p; b=(b*m)%p; m--; n--; } return a*Inv(b,p)%p; ///(a/b)%p 等价于 a*(b,p)的逆元 } lld Lucas(lld n, lld m, lld p) ///把n分段递归求解相乘 { if(m==0) return 1; return Cm(n%p,m%p,p)*(lld)Lucas(n/p,m/p,p)%p; } int main() { lld T,n,m,p; cin>>T; while(T--) { cin>>n>>m>>p; cout<<Lucas(n+m,m,p)<<endl; } return 0; }
相关文章推荐
- hdu-3037-Saving Beans(Lucas定理+大组合数取模)
- hdu 3037 Saving Beans 【大组合数取模-Lucas定理+逆元取模】
- hdu 3037 Saving Beans (大组合数取模--Lucas定理)
- [ACM] hdu 3037 Saving Beans (Lucas定理,组合数取模)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- 【组合数+Lucas定理模板】HDU 3037 Saving
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 3944 Lucas定理--大组合数取模 多校赛
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu-3037(lucas定理求大组合数取模)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- 多校第11场 HDU 3944 DP (lucas定理,大组合数取模)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)
- hdu 6114 Chess(组合数取模)(Lucas定理)