比赛 Asm_Def战记之透明计算网络 评测结果 AWWWWWWWWW
题目名称 Asm_Def排兵布阵 最终得分 10
用户昵称 fyb 运行时间 0.294 s
代码语言 C++ 内存使用 4.49 MiB
提交时间 2015-11-01 08:53:21
显示代码纯文本
#include <cstdio>

using namespace std;

#define KMAX 100000
#define SUMMAX 500000
#define P 998244353

int num[KMAX];
long long jie[SUMMAX+1];

long long quick_pow_mod(long long a,long long x){
	long long tmp;

	a%=P;
	if(!x)return 1;
	else{
		tmp=quick_pow_mod(a,x/2)%P;
		if(x%2)return (((tmp*tmp)%P)*a)%P;
		else return (tmp*tmp)%P;
	}
}

long long div(long long a,long long b){
	return ((a%P)*quick_pow_mod(b,P-2))%P;
}

long long c(long long n,long long m){
	return div(jie[n],(jie[n-m]*jie[m])%P);
}

int main(){
	int k;
	long long ans=1,sum;
	int i;

	freopen("asm_formation.in","r",stdin);
	freopen("asm_formation.out","w",stdout);

	scanf("%d",&k);
	for(sum=i=0;i<k;i++){
		scanf("%d",num+i);
		sum+=num[i];
	}

	jie[0]=1;
	for(i=1;i<=sum;i++)
		jie[i]=(jie[i-1]*i)%P;

	sum=num[0];
	for(i=1;i<k;i++){
		ans=(ans*c(sum+1,num[i]-1))%P;
		sum+=num[i];
	}

	printf("%lld\n",ans);
	return 0;
}