Cod sursa(job #164537)

Utilizator ProtomanAndrei Purice Protoman Data 24 martie 2008 13:51:29
Problema Sandokan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
#include <math.h>
#define rt 2000003
#define mx 5010
int n,k;
long r;
long v[mx];

void descomp(long nr, long ct)
{
	int n=nr;
	for (int i=2; i<=sqrt(nr); i++)
	{
		while (n%i==0)
		{
			v[i]=v[i]+ct;
			n=n/i;
		}
	}
}

int main()
{
	freopen("sandokan.in","r",stdin);
	freopen("sandokan.out","w",stdout);
	scanf("%ld %ld",&n,&k);
	int cn=n;
	while (cn>=k)
		cn=cn-k+1;
	descomp(n-1,1);
	descomp(cn-1,-1);
	descomp((n-cn),-1);
	for (int i=1; i<=n; i++)
			for (int j=1; j<=v[i]; j++)
				r=(r*i)%rt;
	printf("%ld",r);
	fclose(stdin);
	fclose(stdout);
	return 0;
}