Cod sursa(job #476594)

Utilizator ProtomanAndrei Purice Protoman Data 11 august 2010 18:22:57
Problema Permutari2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <algorithm>
#include <stdio.h>

#define MAX 512
#define restRez 10007
#define ll long long 

using namespace std;

int n, k;
int perm[MAX];
int a[MAX][MAX];

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 = 1; i <= n; i++)
	{
		int pt = 0;
		for (int j = i; j > 1; j--)
		{
			ll ad = 0;
			for (int h = 1; h < i; h++)
				ad = ad + a[i - h][j - 1] * a[h][1];

			a[i][j] = (a[i][j] + ad) % restRez;
			pt = (pt + a[i][j]) % restRez;
		}

		a[i][1] = (perm[i] + restRez - pt) % restRez;
	}

	printf("%d\n", a[n][k]);

	fclose(stdin);
	fclose(stdout);
	return 0;
}