Cod sursa(job #1937116)

Utilizator Athena99Anghel Anca Athena99 Data 23 martie 2017 18:49:03
Problema Arbori Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream fin("arbori.in");
ofstream fout("arbori.out");

typedef long long i64;

const int nmax= 90;
const int mmax= 10;

i64 d[nmax+1][mmax+1][nmax+1];

int main(  ) {
    int n, m, k;
    fin>>n>>m>>k;
    for ( int i= 1; i<=n; ++i ) {
        d[1][0][i]= 1;
    }

    for ( int i= 2; i<=n; ++i ) {
        d[i][(i-1)%m][1]= 1;

        for ( int l= 2; l<=n; ++l ) {
            for ( int j= 0; j<m; ++j ) {
                i64 comb= 1;
                for ( int p= 0; p*l<i; ++p ) {
                    d[i][j][l]+= d[i-l*p][((j-p)%m+m)%m][l-1]*comb;
                    comb= (comb*d[l][((k-1)%m+m)%m][l-1]+p)/(p+1);
                }
            }
        }
    }

    fout<<d[n][k][n-1]<<"\n";

    return 0;
}