Cod sursa(job #1994551)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 25 iunie 2017 12:39:48
Problema Arbori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
#define Nmax 101
#define ll long long
using namespace std;
ifstream f("arbori.in");
ofstream g("arbori.out");
ll a[Nmax][Nmax][Nmax];
ll fct=1,n,m,k;
ll rez(int x, int y)
{
    ll val=y==1?1:a[y][(k+m-1)%m][n];
    if(x)
    {
        fct*=(x+val-1);
        fct/=x;
    }
    else fct=1;
    return fct;
}
int main()
{
    int i,j,t,con,p;
    f>>n>>m>>k;
    for(i=0;i<=n;i++)
        a[1][0][i]=1;
    for(i=2;i<=n;i++)
    {
        a[i][(i-1)%m][1]=1;
        for(con=0;con<m;con++)
        {
            j=con%m;
            for(t=2;t<=n;t++)
                for(p=0;p*t<i;p++) a[i][j][t]+=(a[i-(p*t)][(j-p+100*m)%m][t-1]*rez(p,t));
        }
    }
    g<<a[n][k][n];

    return 0;
}