Cod sursa(job #475727)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 8 august 2010 05:01:19
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <cstdio>

using namespace std;

const int MOD = 10007;
const int MAXN = 310;

int n, m;
int c[MAXN][MAXN];

int main() {
	freopen("permutari2.in", "r", stdin);
	freopen("permutari2.out", "w", stdout);

	scanf("%d %d", &n, &m);

	c[1][1] = 1;
	int fact = 1;
	
	for (int i = 2; i <= n; ++i) {
		for (int j = 2; j <= i; ++j)
			for (int k = j-1; k < i; ++k)
				c[i][j] = (c[i][j] + c[k][j-1]*c[i-k][1]) % MOD;

		fact = (fact * i) % MOD;
		c[i][1] = fact;
		for (int j = i; j > 1; --j) {
			c[i][1] -= c[i][j];
			if (c[i][1] < 0) 
				c[i][1] += MOD;
		}
	}

	printf("%d\n", c[n][m]);

	return 0;
}