Cod sursa(job #26655)

Utilizator love_for_uSpancioc Riana love_for_u Data 5 martie 2007 20:10:03
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#define MOD 666013

int N, K, a, b;
long long sol = 1;

int fact(int nr)
{
	int i;
	long long rez = 1;
	
	if (nr == 0) return 1;
	
	for (i = 1; i <= nr; i++) rez = (rez * i) % MOD;
	
	return (rez % MOD);
}

int put(int nr, int p)
{
	int i;
	long long rez = 1; 
	
	if (p == 0) return 1;
	
	for (i = 1; i <= p; i++) rez = (rez * nr) % MOD;
	
	return (rez % MOD);
}

int main()
{
	freopen("kperm.in", "r", stdin);
	freopen("kperm.out", "w", stdout);
	
	scanf("%d %d", &N, &K);
	
	b = N % K;
	a = K - b;
	
	if (K % 2 == 0) { printf("0\n"); return 0; }
	
	sol = ( sol * fact(a) ) % MOD; 
	sol = ( sol * fact(b) ) % MOD; 
	sol = ( sol * put(fact((N/K) + 1), b) ) % MOD;
	sol = ( sol * put(fact(N/K), a) ) % MOD;
		
	printf("%lld\n", sol % MOD);
	
	return 0;
}