1 条题解

  • 0
    @ 2021-10-6 15:54:58
    #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
    上传者