Pagini recente » Cod sursa (job #904426) | Cod sursa (job #2641790) | Cod sursa (job #1789665) | Cod sursa (job #985823) | Cod sursa (job #482237)
Cod sursa(job #482237)
#include <algorithm>
#include <stdio.h>
#define MAX 310
#define restRez 10007
using namespace std;
int n, k;
int perm[MAX];
short a[MAX][MAX];
short restPrec[restRez][restRez];
int main()
{
freopen("permutari2.in", "r", stdin);
freopen("permutari2.out", "w", stdout);
scanf("%d %d", &n, &k);
perm[0] = 1;
for (int i = 1; i <= n; i++)
perm[i] = (perm[i - 1] * i) % restRez;
for (int i = 0; i < restRez; i++)
for (int j = 0; j < restRez; j++)
restPrec[i][j] = (i * j) % restRez;
for (int i = 1; i <= n; i++)
{
int pt = 0;
for (int j = 1; j <= i; j++)
{
for (int h = 1; h < i; h++)
{
a[i][j] = a[i][j] + restPrec[a[i - h][j - 1]][a[h][1]];
a[i][j] -= (a[i][j] >= restRez)? restRez : 0;
}
pt = pt + a[i][j];
pt -= (pt >= restRez)? restRez : 0;
}
a[i][1] = (perm[i] + restRez - pt) % restRez;
}
printf("%d\n", a[n][k]);
fclose(stdin);
fclose(stdout);
return 0;
}