Cod sursa(job #25344)

Utilizator mastermageSchneider Stefan mastermage Data 4 martie 2007 12:08:08
Problema Kperm Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasele 11-12 Marime 0.69 kb
#include <stdio.h>

#define maxN 5100
#define dcon 666013

int n,k,res,vec[maxN];

void inputFunc(){
	FILE*fi=fopen("kperm.in","r");
	fscanf(fi,"%d %d",&n,&k);
	fclose(fi);
}

void outputFunc(){
	FILE*fi=fopen("kperm.out","w");
	fprintf(fi,"%d",res);
	fclose(fi);
}

int main(){
	inputFunc();
	int sum=k*(k+1)/2,d=n/k,m=n%k;
	long long c=1,p=1;
	
	if(sum%k){res=0;outputFunc();return 0;}
	
	for(int i=0;i<k;i++)vec[i]=d;
	for(int i=0;i<m;i++)vec[i]++;
	for(int i=0;i<k;i++){
		c*=vec[i];c%=dcon;
	}
	
	for(int i=0;i<k;i++)vec[i]=k-i;
	for(int i=0;i<m;i++)vec[i]--;
	for(int i=0;i<k;i++){
		p*=vec[i];c%=dcon;
	}
	
	res=(c*p)%dcon;
	
	outputFunc();
	return 0;
}