hdu 3037 lucas定理-组合数学 hdu 4399
2014-10-26 18:22
309 查看
Lucas 定理:A、B是非负整数,p是质数。AB写成p进制:A=a
a[n-1]...a[0],B=b
b[n-1]...b[0]。
则组合数C(A,B)与C(a
,b
)*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同
即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)
C(n-1,r)+C(n-1,r-1)=C(n,r);
这题:C(n+0-1,0)+C(n+1-1,1)+C(n+2-1,2)+……+C(n+m-1,m);
上式第一项,C(n+0-1,0)替换为C(n+1-1,0)
C(n+1-1,0)+C(n+1-1,1)==C(n+2-1,1)
C(n+2-1,1)+C(n+2-1,2)==C(n+3-1,2)
……
结果为C(n+m,m);
用lucas计算。
都用递归写各种爆栈,醉了……
HDU 4399 Xiao Ming's Hope
Lucas定理推广
相当于模为2时的lucas定理。
a[n-1]...a[0],B=b
b[n-1]...b[0]。
则组合数C(A,B)与C(a
,b
)*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同
即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)
C(n-1,r)+C(n-1,r-1)=C(n,r);
这题:C(n+0-1,0)+C(n+1-1,1)+C(n+2-1,2)+……+C(n+m-1,m);
上式第一项,C(n+0-1,0)替换为C(n+1-1,0)
C(n+1-1,0)+C(n+1-1,1)==C(n+2-1,1)
C(n+2-1,1)+C(n+2-1,2)==C(n+3-1,2)
……
结果为C(n+m,m);
用lucas计算。
都用递归写各种爆栈,醉了……
#include <iostream> #include<stdio.h> #include<string.h> using namespace std; #define ll long long ll h[100010]; ll inv(ll n,ll p) { ll m=p-2,ans=1; while(m) { if(m&1) ans=ans*n%p; m>>=1; n=n*n%p; } return ans; } ll C(ll n,ll m,ll p) { if(m==0) return 1; return h *inv(h[m]*h[n-m]%p,p)%p; } ll lucas(ll n,ll m,ll p) { ll ans=1; while(n&&m) { ll a=n%p,b=m%p; if(a<b) return 0; ans=ans*h[a]%p*inv(h[b]*h[a-b]%p,p)%p; n/=p,m/=p; } return ans; } int main() { ll n,m,p; int t; cin>>t; while(t--) { cin>>n>>m>>p; h[0]=1; for(ll i=1;i<=p;i++) h[i]=h[i-1]*i%p; cout<<lucas(n+m,m,p)<<endl; } }
HDU 4399 Xiao Ming's Hope
Lucas定理推广
相当于模为2时的lucas定理。
相关文章推荐
- hdu 3037 Saving Beans(组合数学+lucas定理)
- HDU 3037 Saving Beans(组合数学+Lucas定理)
- HDU 3037 Saving Beans【Lucas定理】【模板题】【模板】【组合数取余】
- HDU 3037 Saving Beans 大组合数 lucas定理
- hdu 3037 排列组合+Lucas定理
- HDU 3037 Saving Beans 组合数取模 Lucas定理
- hdu-3037-组合数取模-Lucas定理
- hdu-3037(lucas定理求大组合数取模)
- lucas定理,组合数学问题
- [Lucas定理] hdu 3037 Saving Beans
- hdu 3037(Lucas定理,大组合数取模)
- 数学学习小记(二) 组合数求模:Lucas 定理 LightOJ 1067 + Hdu 3037
- HDU 4349 Xiao Ming's Hope(数学题,Lucas定理)
- hdu 4366 Card Collector(组合数学:容斥定理)
- HDU 3037 Saving Beans (Lucas定理)
- hdu 3037 lucas定理
- HDU 3037 Saving Beans(lucas定理)
- 【HDU 3037】大数组合取模之Lucas定理+扩展欧几里得求逆元与不定方程一类问题
- HDU 3037 Saving Beans (Lucas定理)
- 【HDU 3037】大数组合取模之Lucas定理