Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
296K282MS1Ashuiguo#include <iostream> #include <stdio.h> using namespace std; const int MOD = 11380; int jg[11][11][11][31]; void init(){ for(int i = 0; i < 11; i++) for(int j = 0; j < 11; j++) for(int k = 0; k < 11; k++) for(int l = 0; l < 31; l++) jg[i][j][k][l] = -1; } int js(int da, int zh, int xi, int sh){ if(sh < 0) return 0; if(jg[da][zh][xi][sh] != -1) return jg[da][zh][xi][sh]; if(da == 0 && zh == 0 && xi == 0){ jg[da][zh][xi][sh] = 1; return 1; } if(sh == 0 && (da > 0 || zh > 0 || xi > 0)){ jg[da][zh][xi][sh] = 0; return 0; } if(sh >= da+zh+xi){ int jieguo = (js(da, zh, xi, da+zh+xi-1) + 1) % MOD; jg[da][zh][xi][sh] = jieguo; return jieguo; } int jieguo = 0; for(int D = 0; D < da; D++){ for(int Z = 0; Z <= zh; Z++){ for(int X = 0; X <= xi; X++){ jieguo += (js(D, Z, X, sh-1) * js(da-D-1, zh-Z, xi-X, sh))%MOD; } } } for(int Z = 0; Z < zh; Z++){ for(int X = 0; X <= xi; X++){ jieguo += (js(0, Z, X, sh-1) * js(da, zh-Z-1, xi-X, sh))%MOD; } } for(int X = 0; X < xi; X++){ jieguo += (js(0, 0, X, sh-1) * js(da, zh, xi-X-1, sh))%MOD; } jieguo %= MOD; jg[da][zh][xi][sh] = jieguo; return jieguo; } int main() { init(); int Da, Zh, Xi, Sh; scanf("%d%d%d%d", &Da, &Zh, &Xi, &Sh); printf("%d\n", (js(Da, Zh, Xi, Sh) + MOD - js(Da, Zh, Xi, Sh-1))%MOD); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator