Pagini recente » Plantatie | Cod sursa (job #240936) | Monitorul de evaluare | Cod sursa (job #2297180) | Cod sursa (job #911931)
Cod sursa(job #911931)
#include <fstream>
using namespace std;
const int MAX_N = 305;
const int Mod = 10007;
int N, K, DP[MAX_N][MAX_N], F[MAX_N];
void Solve() {
F[0] = 1;
for (int i = 1; i <= N; ++i)
F[i] = (i * F[i - 1]) % Mod;
DP[1][1] = 1;
for (int n = 2; n <= N; ++n) {
int SumDP = 0;
for (int k = 2; k <= n; ++k) {
for (int p = k - 1; p < n; ++p)
DP[n][k] = (DP[n][k] + DP[p][k - 1] * DP[n - p][1]) % Mod;
SumDP += DP[n][k];
}
DP[n][1] = (F[n] - SumDP % Mod + Mod) % Mod;
}
}
void Read() {
ifstream in("permutari2.in");
in >> N >> K;
in.close();
}
void Print() {
ofstream out("permutari2.out");
out << DP[N][K] << "\n";
out.close();
}
int main() {
Read();
Solve();
Print();
return 0;
}