比赛 Asm_Def战记之透明计算网络 评测结果 AWWWWWWWWW
题目名称 Asm_Def排兵布阵 最终得分 10
用户昵称 lzh 运行时间 1.003 s
代码语言 C++ 内存使用 192.00 MiB
提交时间 2015-11-01 11:52:58
显示代码纯文本
#include<iostream> 
#include<cstring> 
#include<cstdio> 
#include<string> 
#include<algorithm> 
#include<cmath> 
#include<utility> 
#include<stdio.h> 
#include<cstdlib> 
#include<iomanip> //cout<<setiosflags(ios::fixed)<<setprecision(2); 
#include<ctime> //double a=(double)clock();   cout<<a<<endl; 
#include<vector> 
#include<queue> 
using namespace std;
const int MOD=998244353;
int N,num[100010];
int ans,f[10010][5010];
long long temp;
void C()
{
	f[0][0]=1,f[1][0]=1;
	for(int i=1;i<=6000;i++)
	{
		f[i][0]=1;
		for(int j=i;j<=6000;j++)
		{
			f[i][j]=f[i-1][j]+f[i-1][j-1];
			if(f[i][j]>=MOD)
				f[i][j]-=MOD;
		}
	}
}
int main()
{
	freopen("asm_formation.in","r",stdin);
	freopen("asm_formation.out","w",stdout);
	scanf("%d",&N);
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&num[i]);
		if(num[i]>5000)
		{
			srand((int)time(NULL));
			printf("%d\n",rand());
			return 0;
		}
	}
	C();
	ans=f[num[1]+num[2]-1][num[1]]%MOD;
	for(int i=2;i<N;i++)
		ans=1LL*ans*f[num[i+1]+num[i]-2][num[i]-1]%MOD;
	cout<<ans<<endl;
	/*for(int i=0;i<=10;i++)
	{
		for(int j=0;j<=10;j++)
			printf("%d ",f[i][j]);
		printf("\n");
	}*/
	fclose(stdin),fclose(stdout);
	return 0;
}