记录编号 313981 评测结果 AAAAAAAAAA
题目名称 [NOI 2001]陨石的秘密 最终得分 100
用户昵称 GravatarSky_miner 是否通过 通过
代码语言 C++ 运行时间 0.102 s
提交时间 2016-10-02 15:39:50 内存使用 0.50 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
using namespace std;
inline void read(int &x){
	x=0;char ch;bool flag = false;
	while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
	while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline int cat_min(const int &a,const int &b){return a<b ? a:b;}
inline int cat_max(const int &a,const int &b){return a>b ? a:b;}
const int MOD = 11380;
typedef long long ll;
int L1,L2,L3,D;
int f[32][12][12][12];
void Solve(int d,int l1,int l2,int l3){
	for(int i = 0;i < l1;++i){
		for(int j = 0;j <= l2;++j){
			for(int k = 0;k <= l3; ++k){
				(f[d][l1][l2][l3] += (f[d-1][i][j][k]*f[d][l1-i-1][l2-j][l3-k]) % MOD) %= MOD;
			}
		}
	}
	for(int j = 0;j < l2; ++j){
		for(int k = 0;k <= l3; ++k){
			(f[d][l1][l2][l3] +=(f[d-1][0][j][k]*f[d][l1][l2-j-1][l3-k])%MOD) %= MOD;
		}
	}
	for(int k = 0;k < l3; ++k){
		(f[d][l1][l2][l3] += (f[d-1][0][0][k]*f[d][l1][l2][l3-k-1])%MOD) %= MOD;
	}
}
int main(){
	freopen("secret.in","r",stdin);
	freopen("secret.out","w",stdout);
	read(L1);read(L2);read(L3);read(D);
	for(int i = 0;i <= D; ++i) f[i][0][0][0]=1;
	for(int i = 1;i <= D; ++i){
		for(int j = 0;j <= L1; ++j){
			for(int k = 0;k <= L2; ++k){
				for(int l = 0;l <= L3; ++l){
					Solve(i,j,k,l);
				}
			}
		}
	}
	if(D) printf("%d",((f[D][L1][L2][L3]-f[D-1][L1][L2][L3])%MOD+MOD)%MOD);
	else printf("%d",f[D][L1][L2][L3]);
	fclose(stdin);fclose(stdout);
	return 0;
}