容斥例题Devu and Flowers
Posted -9-qaq-6-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容斥例题Devu and Flowers相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int mod=1000000007;
LL PowMod(LL x,LL n) {
LL res=1;
while(n) {
if(n&1) {
res=res*x%mod;
}
x=x*x%mod;
n>>=1;
}
return res;
}
LL com(LL n,LL m){
if(n<m)return 0;
LL res=1;
for(int i=1;i<=m;i++){
res=res*i%mod;
}
res=PowMod(res,mod-2);
for(LL i=n;i>n-m;i--){
res=res*(i%mod)%mod;
}
return res;
}
LL f[10000005];
int main(){
LL n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>f[i];
}
LL ans=0;
for(int s=0;s<1<<n;s++){
LL sum=0;
for(int i=0;i<n;i++){
if(s>>i&1){
sum+=f[i]+1;
}
}
if(__builtin_parity(s)){
ans-=com(n+m-1-sum,n-1);
}else{
ans+=com(n+m-1-sum,n-1);
}
}
ans=(ans%mod+mod)%mod;
cout<<ans<<endl;
return 0;
}
以上是关于容斥例题Devu and Flowers的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 451 E. Devu and Flowers(组合数学,数论,容斥原理)
Codeforces 451E Devu and Flowers容斥原理+卢卡斯定理