Pagini recente » Cod sursa (job #274760) | Cod sursa (job #1388673) | Cod sursa (job #1132166) | Cod sursa (job #843089) | Cod sursa (job #2246591)
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
ifstream fi("permutari2.in");
ofstream fo("permutari2.out");
namespace {
const int N = 305, MOD = 10007;
int fact[N], dp[N][N];
static void fix(int &x) {
x = x >= MOD ? x - MOD : x;
x = x < 0 ? x + MOD : x; } };
int main() {
int n, k;
fact[0] = 1;
for (int i = 1; i < N; ++i)
fact[i] = fact[i - 1] * i % MOD;
for (int i = 2; i < N; ++i) {
dp[1][i] = fact[i] - fact[i - 1];
for (int j = 1; j < i; ++j) {
dp[1][i] = dp[1][i] - dp[1][j] * fact[i - j] % MOD;
fix(dp[1][i]); } }
fi >> n >> k;
dp[1][1] = 1;
for (int t = 2; t <= k; ++t)
for (int i = t; i <= n; ++i) {
for (int j = t - 1; j <= i; ++j)
dp[t][i] = (dp[t][i] + dp[t - 1][j] * dp[1][i - j]) % MOD; }
fo << dp[k][n] << endl;
return 0; }