Pagini recente » Cod sursa (job #392956) | Cod sursa (job #429766) | Cod sursa (job #133363) | Cod sursa (job #2494987) | Cod sursa (job #1591653)
#include <fstream>
const int MAX_N = 300;
const int MOD = 10007;
using namespace std;
unsigned D[MAX_N + 1][MAX_N + 1];
int main() {
ifstream in("permutari2.in");
int N, K; in >> N >> K;
in.close();
unsigned fact = 1;
D[1][1] = 1;
for (int i = 2; i <= N; i++) {
fact = (fact * i) % MOD;
D[1][i] = fact;
for (int j = 2; j <= i; j++) {
unsigned long long q = 0LL;
unsigned *ptr1 = D[j - 1] + j - 1;
unsigned *ptr2 = D[1] + i - j + 1;
for (int x = j - 1; x < i; x++) {
// q += D[j - 1][x] * D[1][i - x];
q += *ptr1 * *ptr2;
ptr1++; ptr2--;
}
D[j][i] = q - q / MOD * MOD;
D[1][i] += MOD - D[j][i];
D[1][i] -= MOD & -(D[1][i] >= MOD);
}
}
ofstream out("permutari2.out");
out << D[K][N] << '\n';
out.close();
return 0;
}