Pagini recente » Cod sursa (job #1068258) | Cod sursa (job #1376169) | Cod sursa (job #2365987) | Cod sursa (job #3141692) | Cod sursa (job #135358)
Cod sursa(job #135358)
#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++)
{
if(t == 1) A[n][k][p] += baga(n-t, (k-1+M)%M, t);
else 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(i = 0; i <= N; i++) A[1][0][i] = 1;
printf("%lld\n", baga(N, K, 1));
return 0;
}