1 条题解
-
0
#include <cstdio> using namespace std; inline int read() { int res=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9') {res=res*10+ch-'0'; ch=getchar();} return res*f; } const int mod=11380; int l1,l2,l3,d; int f[31][11][11][11]; signed main() { l1=read(); l2=read(); l3=read(); d=read(); f[0][0][0][0]=1; for(register int i=1;i<=d;++i) for(register int j=0;j<=l1;++j) for(register int k=0;k<=l2;++k) for(register int l=0;l<=l3;++l) { if((j==0&&k==0)&&l==0) f[i][j][k][l]=1; for(register int x=0;x<l;++x) f[i][j][k][l]=(f[i][j][k][l]+f[i-1][0][0][x]*f[i][j][k][l-1-x])%mod; for(register int x=0;x<k;++x) for(register int y=0;y<=l;++y) f[i][j][k][l]=(f[i][j][k][l]+f[i-1][0][x][y]*f[i][j][k-1-x][l-y])%mod; for(register int x=0;x<j;++x) for(register int y=0;y<=k;++y) for(register int z=0;z<=l;++z) f[i][j][k][l]=(f[i][j][k][l]+f[i-1][x][y][z]*f[i][j-1-x][k-y][l-z])%mod; } if(d==0) printf("%d\n",f[d][l1][l2][l3]);//要特判一下d=0的情况 else printf("%d\n",(f[d][l1][l2][l3]-f[d-1][l1][l2][l3]+mod)%mod); return 0; }
- 1
信息
- ID
- 227
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者