比赛 |
Asm_Def战记之透明计算网络 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Asm_Def排兵布阵 |
最终得分 |
100 |
用户昵称 |
Asm.Def |
运行时间 |
3.203 s |
代码语言 |
C++ |
内存使用 |
6.01 MiB |
提交时间 |
2017-08-29 21:36:38 |
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 500010, mod = 998244353;
typedef long long LL;
int powmod(int a, int n)
{
int ans = 1;
while(n)
{
if(n & 1) ans = (LL) ans * a % mod;
a = (LL) a * a % mod;
n >>= 1;
}
return ans;
}
int fact[maxn], fact_inv[maxn], inv[maxn], k;
int C(int n, int m)
{
return (LL) fact[n] * fact_inv[n-m] % mod * fact_inv[m] % mod;
}
void init()
{
fact[0] = fact_inv[0] = inv[0] = 1;
for(int i = 1;i < maxn;++i)
{
fact[i] = (LL) fact[i-1] * i % mod;
inv[i] = powmod(i, mod-2);
fact_inv[i] = (LL) fact_inv[i-1] * inv[i] % mod;
}
}
void work()
{
int sum = 0, a, ans = 1;
scanf("%d", &k);
while(k--)
{
scanf("%d", &a);
ans = (LL) ans * C(sum+a-1, a-1) % mod;
sum += a;
}
printf("%d\n", ans);
}
int main()
{
#ifdef DEBUG
freopen("test.txt", "r", stdin);
#else
freopen("asm_formation.in", "r", stdin);
freopen("asm_formation.out", "w", stdout);
#endif // DEBUG
init();
work();
return 0;
}