Pagini recente » Cod sursa (job #2136621) | Cod sursa (job #946822) | Cod sursa (job #3244794) | Cod sursa (job #1671499) | Cod sursa (job #135349)
Cod sursa(job #135349)
#include <stdio.h>
#include <string.h>
using namespace std;
#define llong long long
#define MAXN 92
#define MAXK 11
int N, M, K;
llong A[MAXN][MAXK][MAXN];
llong baga(int n, int k, int p)
{
if(A[n][k][p] != -1) return A[n][k][p];
int t;
for(A[n][k][p] = 0, t = p; t < n; t++)
A[n][k][p] += baga(t, (K-1+M)%M, 1) * baga(n-t, (k-1+M)%M, t);
return A[n][k][p];
}
int main(void)
{
freopen("arbori.in", "rt", stdin);
freopen("arbori.out", "wt", stdout);
scanf("%d %d %d\n", &N, &M, &K);
int i, j;
memset(A, -1, sizeof(A));
for(i = 0; i < M; i++) for(j = 0; j <= N; j++) A[1][i][j] = 0;
for(j = 0; j <= N; j++) A[1][0][j] = 1;
printf("%lld\n", baga(N, K, 1));
return 0;
}