Pagini recente » Cod sursa (job #2914496) | Cod sursa (job #1076336) | Cod sursa (job #1620904) | Cod sursa (job #2329972) | Cod sursa (job #2197027)
#include <fstream>
#include <vector>
#define MOD 10007
using namespace std;
ifstream in("permutari2.in");
ofstream out("permutari2.out");
int main()
{
int n, k, fact = 1;
in >> n >> k;
vector<vector<int> > dp(n + 1, vector<int>(n + 1));
for (int i = 1; i <= n; i++)
{
fact = (fact * i) % MOD;
dp[i][1] = fact;
for (int j = 2; j <= i; j++)
{
for (int w = j - 1; w < i; w++)
dp[i][j] = (dp[i][j] + dp[i - w][1] * dp[w][j - 1]) % MOD;
dp[i][1] = dp[i][1] - dp[i][j];
if (dp[i][1] < 0)
dp[i][1] = dp[i][1] + MOD;
}
}
out << dp[n][k];
return 0;
}