Pagini recente » Borderou de evaluare (job #2695074) | Borderou de evaluare (job #2113531) | Borderou de evaluare (job #1058576) | Borderou de evaluare (job #509075) | Cod sursa (job #2125316)
# include <bits/stdc++.h>
using namespace std;
int N, M, K;
long long dp[101][101][101];
inline int mod (int A) {
if (A >= M) A -= M;
if (A >= M) A %= M;
if (A < 0) A += M;
return A;
}
int main() {
ifstream fin("arbori.in"); fin>>N>>M>>K;
for (int i = 0; i <= N; ++i)
dp[1][0][i] = 1;
for (int i = 2; i <= N; ++i) {
dp[i][mod (i - 1)][1] = 1;
for (int k = 2; k <= N; ++k)
for (int j = 0; j < M; ++j) {
long long sol = 1;
for (int l = 0; l * k < i; ++l) {
dp[i][j][k] += sol * dp[i - l * k][mod (j - l)][k - 1];
sol *= dp[k][mod (K - 1)][k - 1] + l, sol /= l + 1;
}
}
}
ofstream fout("arbori.out"); fout<<dp[N][K][N - 1];
return 0;
}