Cod sursa(job #26434)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 5 martie 2007 16:27:21
Problema Kperm Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>
#define MOD 666013

typedef long long lint;

#define nmax 5111

lint n,k,fact[nmax];

lint put(lint x,lint j)
{	
	if(j==1)
		return x;
	lint aux=put(x,j>>1);
	aux=(aux*aux)%MOD;
	if(j&1)
		aux*=x;
	return aux%MOD;
}

lint doit(lint a,lint b)
{
	if(!(b&1))
		return 0;
	lint r,c;
	r=a%b;
	c=a/b;
	return ((fact[r]*fact[b-r])%MOD) * (put(fact[c+1],r)*put(fact[c],b-r)%MOD);
}

int main()
{
	lint i;
	freopen("kperm.in","r",stdin);
	freopen("kperm.out","w",stdout);
	fact[0]=1;
	for(i=1;i<nmax;++i)
		fact[i]=(fact[i-1]*i)%MOD;
	scanf("%lld %lld",&n,&k);
	printf("%lld\n",doit(n,k)%MOD);
	return 0;
}