比赛 五一大礼包 评测结果 AAWAAWWWWW
题目名称 孤独摇滚! 最终得分 40
用户昵称 梦那边的美好ME 运行时间 1.104 s
代码语言 C++ 内存使用 16.24 MiB
提交时间 2026-05-04 11:44:30
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const ll mod=998244353;

ll n,a,b,c,d;
ll ans;
ll C[1100][1100];
ll maxn;
ll f[1100][1100],cnt;

ll solve(ll m,ll a,ll b,ll c,ll d){
	if (m<0) return 0;
	if (m==0) return 1;
	f[++cnt][0]=1;
	ll ls[6]={a,b,c,d};
	for (int k=0;k<4;k++){
		for (int j=0;j<=m;j++){
			if (!f[cnt][j]) continue;
			for (int p=0;p<=ls[k]&&j+p<=m;p++)
				f[cnt+1][j+p]=(f[cnt+1][j+p]+f[cnt][j]*C[m-j][p])%mod;
		}
		cnt++;
	}
	return f[cnt][m];
}

int main(){
	freopen("Bocchi.in","r",stdin);
	freopen("Bocchi.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>a>>b>>c>>d;
	for (int i=0;i<=1000;i++){
		C[i][0]=1;
		for (int j=1;j<=i;j++){
			C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
		}
	}
	maxn=min({n/4,a,b,c,d});
	for (int k=0;k<=maxn;k++){
		ll res=solve(n-4*k,a-k,b-k,c-k,d-k);
		res=(res*C[n-3*k][k])%mod;
		if (k&1){
			ans=(ans-res+mod)%mod;
		}else{
			ans=(ans+res)%mod;
		}
	}
	cout<<ans;
	return 0;
}