Cod sursa(job #41260)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 28 martie 2007 09:21:12
Problema Kperm Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>

const int MOD = 666013;
const int NMAX = 5120;

int F[NMAX];

int fact(int k) {
	if (k == 0) return 1;

	if (F[k] == 0) 
		F[k] = (fact(k - 1) * k) % MOD;
	
	return F[k];
}

int topower(int k, int p) {
	int v, rez = 1;

	for (v = k; p; p >>= 1, v = (v * v) % MOD)
		if (p & 1)
			rez = (rez * v) % MOD;
	
	return rez;
}

int main() {
	
	freopen("kperm.in", "rt", stdin);
	freopen("kperm.out", "wt", stdout);

	int N, K;

	scanf(" %d %d", &N, &K);

	int C, R, rez;

	C = N / K;
	R = N % K;

	rez = (fact(R) * fact(K - R)) % MOD;
	rez = (rez * topower(fact(C + 1), R)) % MOD;
	rez = (rez * topower(fact(C), K - R)) % MOD;

	printf("%d\n", rez);

	return 0;
}