Cod sursa(job #25920)

Utilizator IgnitionMihai Moraru Ignition Data 4 martie 2007 16:17:59
Problema Kperm Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>

#define MOD (666013)

long long fact(long long x)
{
	long long tmp = 1, i;
	for(i = 2; i <= x; ++ i) {
		tmp *= i;
		tmp %= MOD;
	}
	return tmp;
}

long long power(long long x, long long y)
{
	long long tmp = x, i;
	for(i = 2; i <= y; ++ i) {
		tmp *= x;
		tmp %= MOD;
	}
        if(y == 0)
        	tmp = 1;
	return tmp;
}

int main()
{
	long long N, K, X, tmp;

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

	scanf("%lld %lld", &N, &K);
	long long k1 = N%K, k2 = K-k1, r1 = N/K+1, r2 = N/K;
	X = fact(k1)*fact(k2); X %= MOD;

	tmp = fact(r1); tmp = power(tmp, k1);
	X *= tmp; X %= MOD;

	tmp = fact(r2); tmp = power(tmp, k2);
	X *= tmp; X %= MOD;

	if(K%2 == 0)
		X = 0;
	
	printf("%lld\n", X);	

	return 0;
}