uvala 4123 WF2008 Glenbow Museum

#include 
#include 
#include 
#include 
#include 

using namespace std;

long long f[1010][1010];

long long fun(int n, int m){
    
    memset(f,0,sizeof(f));
    f[0][0] = 1;
    for (int i = 1; i <= n; ++i){
        for (int j = 0; j <= m; ++j){
            f[i][j] = f[i-1][j-1] + f[i-1][j];
        }
    }
    return f[n][m];
}

int main(){

    int l;
    int kase = 0;
    fun(1000,1000);

    while (scanf("%d",&l),l){
        if (l < 4 || l & 1){
            printf("Case %d: 0\n",++kase);
        }else{
            int n = (l + 4) / 2;
            int m = (l - 4) / 2;
            printf("Case %d: %lld\n",++kase,f[n+1][m] - f[n-1][m-2]);     
        }
    }
    
    return 0;
}

你可能感兴趣的:(题解)