Cod sursa(job #451541)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 9 mai 2010 18:14:30
Problema Kperm Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>

#define file_in "kperm.in"
#define file_out "kperm.out"

long long n,k,fact[5010];

#define mod 666013

void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%lld %lld", &n, &k);
}

inline long long putere(long long a,long long b)
{
	if (b==0)
		return 1;
	if (b%2==0)
	{
		long long x=putere(a,b/2);
		return (x%mod)*(x%mod);
	}
	else
	{
		long long x=putere(a,b/2);
		return ((x%mod)*(x%mod)*a)%mod;
	}
}

	

void solve()
{
	long long c=n/k;
	long long r=n%k;
	
	long long i,suma=0;
	long long p;
	
	if (k%2==0)
		printf("0\n");
	else
	{
	fact[0]=1;
	for (i=1;i<=n;++i) fact[i]=(fact[i-1]*i)%mod;
	suma=fact[r]%mod;
	for (i=1;i<=r;++i)
		 suma=(suma+fact[c+1])%mod;
	suma=(suma+fact[k-r])%mod;
	for (i=r+1;i<=k;++i)
		 suma=(suma+fact[c])%mod;
	printf("%lld", suma);
	}	
}

int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}