Cod sursa(job #25093)

Utilizator mugurelionutMugurel-Ionut Andreica mugurelionut Data 4 martie 2007 10:34:58
Problema Kperm Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasele 11-12 Marime 0.79 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 5010
#define P 666013
#define BIGINT __int64

BIGINT fact[NMAX];
int i, j, k, r, N, K, sum, insol;
BIGINT nsol;

void nosol(void)
{
	freopen("kperm.out", "w", stdout);
	printf("0\n");
	exit(0);
}

int main()
{
	freopen("kperm.in", "r", stdin);

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

	fact[0] = 1;

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

	r = N % K;

	sum = (K * (K - 1)) / 2;

	if (sum % K != 0)
		nosol();

	nsol = fact[r] % P;

	for (i = 1; i <= r; i++)
		nsol = (nsol * fact[(N / K) + 1]) % P;

	nsol = (nsol * fact[K - r]) % P;

	for (i = r + 1; i <= K; i++)
		nsol = (nsol * fact[N / K]) % P;

	freopen("kperm.out", "w", stdout);

	printf("%d\n", (int) nsol);

	return 0;
}