Cod sursa(job #27261)

Utilizator victor_u_roVictor Ungureanu victor_u_ro Data 6 martie 2007 12:01:23
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>

#define PRIM 666013

int n, k, a, b;
long long r;

void cit() {
	freopen("kperm.in", "rt", stdin);

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

	fclose(stdin);
}

void rez() {
	int i;
	long long r0, r1;

	if (k % 2 == 0)
		r = 0;
	else {
			b = n % k;
		a = k - b;
		r0 = 1;
		for (i = 1; i <= b; i++)
			r0 = (r0 * i) % PRIM;
		r = r0;
		r0 = 1;
		for (i = 1; i <= a; i++)
			r0 = (r0 * i) % PRIM;
		r = (r * r0) % PRIM;
		r0 = 1;
		for (i = 1; i <= n / k + 1; i++)
			r0 = (r0 * i) % PRIM;
		r1 = 1;
		for (i = 1; i <= b; i++)
			r1 = (r1 * r0) % PRIM;
		r = (r * r1) % PRIM;
		r0 = 1;
		for (i = 1; i <= n / k; i++)
			r0 = (r0 * i) % PRIM;
		r1 = 1;
		for (i = 1; i <= a; i++)
			r1 = (r1 * r0) % PRIM;
		r = (r * r1) % PRIM;
	}
}

void afis() {
	freopen("kperm.out", "wt", stdout);

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

	fclose(stdout);
}

int main() {
	cit();
	rez();
	afis();

	return 0;
}