bzoj 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+Lucas定理)
2017-03-27 21:36
555 查看
题目描述
传送门
题解
容斥部分:至少0个超过限制的-至少1个超过限制的+至少2个超过限制的-….剩下的就是组合数学的锅了,用插板法然后化简就可以啦。
代码
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define LL long long using namespace std; LL n,m,t,p,a[20]; LL jc[1000003],inv[1000003]; LL quickpow(LL num,int x) { LL base=num%p; LL ans=1; while (x) { if (x&1) ans=ans*base%p; x>>=1; base=base*base%p; } return ans; } LL C(LL n,LL m) { return jc *inv[m]%p*inv[n-m]%p; } LL calc(LL n,LL m) { if (m==0) return 1; return calc(n/p,m/p)*C(n%p,m%p)%p; } int main() { freopen("a.in","r",stdin); //freopen("my.out","w",stdout); scanf("%lld%lld%lld%lld",&n,&t,&m,&p); jc[0]=1; for (LL i=1;i<=p;i++) jc[i]=(LL)jc[i-1]*i%p; for (LL i=0;i<=p;i++) inv[i]=quickpow(jc[i],p-2); for (LL i=1;i<=t;i++) scanf("%lld",&a[i]); LL ans=0; for (int i=0;i<(1<<t);i++){ LL sum=0; int cnt=0; for (int j=0;j<t;j++) if ((i>>j)&1) sum+=(a[j+1]+1),cnt++; if (sum>m) continue; sum=m-sum; LL c=calc(n+sum,n); //if (c<0) cout<<"!"<<endl; // cout<<c<<endl; //cout<<n+sum<<" "<<n<<" "<<c<<endl; if (cnt&1) ans=(ans-c+p)%p; else ans=(ans+c)%p; } printf("%lld\n",(ans%p+p)%p); }
相关文章推荐
- 【BZOJ 1272】 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)
- BZOJ1272: [BeiJingWc2008]Gate Of Babylon
- BZOJ 1272: [BeiJingWc2008]Gate Of Babylon 容斥+Lucas+隔板法+逆元
- bzoj 1272: [BeiJingWc2008]Gate Of Babylon
- BZOJ1272: [BeiJingWc2008]Gate Of Babylon
- bzoj 1272: [BeiJingWc2008]Gate Of Babylon
- 1272: [BeiJingWc2008]Gate Of Babylon
- [BZOJ1272][BeiJingWc2008]Gate Of Babylon(容斥原理+组合数学lucas定理)
- 【BZOJ1272】Gate Of Babylon [Lucas][组合数][逆元]
- 【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
- ●BZOJ 1272 [BeiJingWc2008]Gate Of Babylon
- Gate Of Babylon(bzoj 1272)
- Gate Of Babylon BZOJ 1272
- BZOJ1272 [BeiJingWc2008]Gate Of Babylon
- bzoj1272 Gate Of Babylon
- 【BZOJ 1272】 [BeiJingWc2008]Gate Of Babylon
- bjoi 2008 Gate Of Babylon 容斥原理
- BZOJ1270: [BeijingWc2008]雷涛的小猫
- BZOJ 1270 Beijing Wc 2008 雷涛的小猫 动态规划
- 【BZOJ】1270: [BeijingWc2008]雷涛的小猫(DP+水题)