Cod sursa(job #459489)

Utilizator SpiderManSimoiu Robert SpiderMan Data 29 mai 2010 22:50:26
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>

typedef long long ll;
const int MAX_N = 5005;
const int MOD = 666013;

ll kpr[MAX_N];
int r, N, K, sum;

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

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

	r = N % K;

	kpr[0] = 1;

	for (int i = 1; i <= N; i++)
		kpr[i] = (kpr[i - 1] * (ll) i) % MOD;

	sum = (K * (K - 1)) >> 1;

	if (sum % K != 0)
	{
		printf("0");
		return 0;
	}

	ll rez = kpr[r] % MOD;

	for (int i = 1; i <= r; i++)
		rez *= kpr[(N / K) + 1], rez %= MOD;

	rez *= kpr[K - r], rez %= MOD;

	for (int i = r + 1; i <= K; i++)
		rez *= kpr[N / K], rez %= MOD;

	printf("%d", (int) rez);

	return 0;
}