Cod sursa(job #477072)

Utilizator blasterzMircea Dima blasterz Data 13 august 2010 12:19:22
Problema Kperm Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <iostream>

#include <cstring>
#define mod 666013
#define lint long long

lint n, K;

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

	scanf ("%lld %lld\n", &n, &K);

	lint C = n / K;
	lint R = n % K;

	if ((K * (K -1) / 2) % K)
	{
		printf ("0\n");
		return 0;
	}

	lint sol = 1;
	int i;

	for (i = 2; i <= R; ++i)
		sol *= i,
		sol %= mod;

	lint kr = 1;

	for (i = 2; i <= K - R; ++i)
		kr *= i,
		kr %= mod;

	sol *= kr;
	sol %= mod;


	lint c1 = 1;


	for (i = 2; i <= C + 1; ++i)
		c1 *= i,
		c1 %= mod;

	lint c11 = c1;

	for (i = 2; i <= R; ++i)
		c1 *= c11,
		c1 %= mod;

	sol *= c1;
	sol %= mod;

	lint cc = 1;
	for (i = 2; i <= C; ++i)
		cc *= i,
		cc %= mod;

	lint ccc = cc;

	for (i = 2; i <= K - R; ++i)		
		cc *= ccc,
		cc %= mod;
	
	sol *= cc;
	sol %= mod;


	cout << sol << "\n";
	//printf ("%lld\n", sol);
		
	return 0;
}