Cod sursa(job #465487)

Utilizator andrei.12Andrei Parvu andrei.12 Data 24 iunie 2010 14:08:08
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>

const int mod = 666013;

int N, K, cat, rest, rem, i;
long long rsp, fact[5005];

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

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

	if (K % 2 == 0){
		printf("0\n");

		return 0;
	}

	fact[0] = 1;
	for (i = 1; i <= N; i ++)
		fact[i] = (fact[i - 1] * i) % mod;

	cat = N / K;
	rest = N - cat * K;

	rsp = fact[rest];
	for (i = 1; i <= rest; i ++)
		rsp = (rsp * fact[cat + 1]) % mod;

	rem = K - rest;

	rsp = (rsp * fact[rem]) % mod;
	for (i = 1; i <= rem; i ++)
		rsp = (rsp * fact[cat]) % mod;

	printf("%lld\n", rsp);

	return 0;
}