比赛 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;
}