Cod sursa(job #25937)

Utilizator wefgefAndrei Grigorean wefgef Data 4 martie 2007 16:36:09
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

#define mod 666013

int n; 
long long k;
long long rez = 1;

void readdata()
{
	freopen("kperm.in", "r", stdin);
	freopen("kperm.out", "w", stdout);
	
	scanf("%d %d", &n, &k);
}

void solve()
{
	long long v1, v2, val, aux;
	int i;
	
	v1 = n%k;
	v2 = k - n%k;
	
	for (i = 1; i <= v1; ++i)
		rez = (rez * (long long)i) % mod;
	for (i = 1; i <= v2; ++i)
		rez = (rez * (long long)i) % mod;
	
	val = 1;
	for (i = 1; i <= n/k+1; ++i)
		val = (val * (long long)i) % mod;
	aux = 1;
	for (i = 1; i <= v1; ++i)
		aux = (aux * val) % mod;
	rez = (rez * aux) % mod;
	
	val = 1;
	for (i = 1; i <= n/k; ++i)
		val = (val * (long long)i) % mod;
	aux = 1;
	for (i = 1; i <= v2; ++i)
		aux = (aux * val) % mod;
	rez = (rez * aux) % mod;	
}

void writedata()
{
	printf("%d\n", k%2 ? rez : 0);
}

int main()
{
	readdata();
	solve();
	writedata();
	return 0;
}