Cod sursa(job #163644)

Utilizator ioraIoana Radu iora Data 22 martie 2008 14:51:19
Problema Sandokan Scor 35
Compilator cpp Status done
Runda preONI 2008, Runda Finala, Clasele 5-8 Marime 0.58 kb
#include<stdio.h>
long n,k,r,t,p,p2,i;
int main()
{
	freopen("sandokan.in","r",stdin);
	freopen("sandokan.out","w",stdout);
	scanf("%ld %ld",&n,&k);
	
    if(n%k==k-1) r=n/k+1;
    else r=n/k;
	
	t=n+r;
	
	r=t%k;
	if(t%k==0) r=1;
	
	if(r==1)
		printf("%ld",r);
	if(r==2) printf("%ld",n-1);
	if(r==3) printf("%ld",((n-1)*(n-2))/2%2000003);
	if(r>3)
	{
		n=n-1;
		p=1;
		for(i=n-r+1;i<=n;++i)
			p=((p%2000003)*(i%2000003))%2000003;
		p2=1;
		for(i=1;i<=k;++i)
			p2=(p2*(i%2000003))%2000003;
		while(p%p2)
			p+=p2;
		printf("%d",(p/p2)%2000003);
	}
	return 0;
}