| 比赛 |
五一大礼包 |
评测结果 |
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;
}