Pagini recente » Cod sursa (job #3253187) | Cod sursa (job #414457) | Cod sursa (job #1136505) | Cod sursa (job #2594297) | Cod sursa (job #2966783)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("arbori.in");
ofstream fout("arbori.out");
int n, m, k;
long long dp[92][12][92];
int mod(int x)
{
int aux = x % m;
if(aux < 0)
aux += m;
return aux;
}
int main()
{
fin >> n >> m >> k;
for(int i = 1; i <= n; i++)
dp[1][0][i] = 1;
for(int i = 2; i <= n; i++)
{
dp[i][mod(i - 1)][1] = 1;
for(int j = 0; j <= m; j++)
{
for(int p = 2; p <= n; p++)
{
long long comb = 1;
for(int x = 0; x * p < i; x++)
{
dp[i][j][p] += 1LL * dp[i - x * p][mod(j - x)][p - 1] * comb;
comb = 1LL * comb * (dp[p][mod(k - 1)][n] + x) / (1LL * (x + 1));
}
}
}
}
fout << dp[n][k][n] << '\n';
return 0;
}