Cod sursa(job #481830)

Utilizator MirceaTanaseMircea Tanase MirceaTanase Data 1 septembrie 2010 19:27:09
Problema Kperm Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <algorithm>
#include <stdio.h>

#define MAX 5010
#define restRez 666013
#define ll long long

using namespace std;

int n, k;
ll fact[MAX];

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

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

	fact[0] = 1;
	for (int i = 1; i <= n; i++)
		fact[i] = (fact[i - 1] * i) % restRez;

	int lim = n % k;
	ll sol = 0;
	if (k % 2)
	{
		sol = (fact[lim] * fact[k - lim]) % restRez;
		for (int i = 1; i <= lim; i++)
			sol = (sol * (n / k + 1)) % restRez;
		for (int i = 1; i <= k - lim; i++)
			sol = (sol * (n / k)) % restRez;
	}

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

	fclose(stdin);
	fclose(stdout);
	return 0;
}