Cod sursa(job #25355)

Utilizator TheCreeepIonita Andrei Lucian TheCreeep Data 4 martie 2007 12:12:08
Problema Ograzi Scor 0
Compilator c Status done
Runda preONI 2007, Runda 3, Clasele 11-12 Marime 0.74 kb
#include <stdio.h>
int n,k,N,K,P;
long long answer;
#define MOD 666013
FILE *f;
long long fact(int t)
{
	long long ret = 1,i;
	if (t == 0)  return 1;
	for(i=1;i<=t;i++)
		ret = (ret*i) % MOD;
	return ret;
}
long long power(long long b, int p)
{
	long long ret=1,i;
	if (p==0) return 1;
	for(i=1;i<=p;i++)
		ret =(ret*b)%MOD;
	return ret;
}
int main (void)
{
	f=fopen("kperm.in","r");
	fscanf(f,"%d %d",&n,&k);
	fclose(f);
	K=k;
	N=n/k; if (n%k!=0) N++;
	P=k-n%k; if (n%k==0) P=0;
	answer = power (fact(N),K-P);
	if (P!=0) answer *= power ( fact(N-1), P); 
	answer = answer % MOD;
	answer *= fact (K-P); 
	answer = answer % MOD;
	answer *= fact ( P ) ;
	answer = answer % MOD;
	f=fopen("kperm.out","w");
	fprintf(f,"%lld\n",answer);
	fclose(f);
	return 0;
}