Pagini recente » Rating Pirvu Mircea (mirceas112) | Cod sursa (job #1762700) | Cod sursa (job #2058945) | Cod sursa (job #2813843) | Cod sursa (job #1837602)
#include <bits/stdc++.h>
using namespace std;
ifstream in("permutari2.in");
ofstream out("permutari2.out");
const int N = 300;
const int Mod = 10007;
int n, k;
int dp[N + 1][N + 1];
void Fix(int &x) {
while (x < 0)x += Mod;
x %= Mod;
}
int main() {
dp[0][0] = 1;
in >> n >> k;
for (int i = 1, Fact = 1; i <= n; ++i) {
Fact = (Fact * i) % Mod;
dp[i][1] = Fact;
for (int j = 2; j <= n; ++j) {
for (int last = 1; last < i; ++last) {
dp[i][j] = (dp[i][j] + 1LL * dp[last][j - 1] * dp[i - last][1]) % Mod;
}
dp[i][1] -= dp[i][j];
Fix(dp[i][1]);
}
}
out << dp[n][k];
return 0;
}