Cod sursa(job #363383)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 12 noiembrie 2009 22:44:50
Problema Kperm Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <cstdio>
#define X 666013
#define ll long long

int fact(int x)
{
	int p=1, i;
	for (i=x; i>1; i--) p=(int)((ll)p*i%X);
	return p;
}

int put (int x, int c)
{
	int i, p=1;
	for (i=1; i<=c; i++) p=(int)((ll)p*x%X);
	return p;
}

int main()
{
	freopen("kperm.in","r",stdin);
	freopen("kperm.out","w",stdout);
	int n, k, r, c, p;
	scanf("%d %d",&n,&k);
	if (!(k%2)) printf("0\n"); else
	{
		r=n%k;
		c=n/k;
		p=fact(r);
		p=(int)((ll) p*fact(k-r)%X);
		p=(int)((ll) p*put(c+1,r)%X);
		p=(int)((ll) p*put(c,k-r)%X);
		printf("%d",p);
	}
}