Title
Solution
对于一种种类的,考虑插板法,有
K
K
K个回合,
a
a
a个物品的话,方案数就是
C
K
+
A
K
\large C_{K+A}^{K}
CK+AK
对于不同的种类,考虑乘法原理。
Code
#include<cstdio>
#include<algorithm>
#define ll long long
#define rep(i,x,y) for(register ll i=x;i<=y;i++)
using namespace std;
const ll mod=998244353;
ll n,K,a,sum=1;
ll ksm(ll x,ll y){
ll ans=1;
for(;y;y>>=1,x=(x*x)%mod) if (y&1) ans=(ans*x)%mod;
return ans;
}
int main(){
scanf("%lld%lld",&n,&K);
rep(i,1,n) {
scanf("%lld",&a);
ll t=1,w=1;
rep(j,1,a) t=(t*((K+j)%mod))%mod,w=(w*j)%mod;
t=(t*ksm(w,mod-2))%mod;
sum=(sum*t)%mod;
}
printf("%lld",sum);
return 0;
}