Pagini recente » Cod sursa (job #736287) | Cod sursa (job #499941) | Cod sursa (job #2924647) | Cod sursa (job #263594) | Cod sursa (job #1209127)
#include <fstream>
#define MOD 10007
#define MAXN 305
using namespace std;
int N, K, DP[MAXN][MAXN], F[MAXN];
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 f("permutari2.in");
f >> N >> K;
}
void Print() {
ofstream g("permutari2.out");
g << DP[N][K] << "\n";
}
int main() {
Read();
Solve();
Print();
return 0;
}