Cod sursa(job #25704)

Utilizator damaDamaschin Mihai dama Data 4 martie 2007 14:14:14
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#define modul 666013

long long sol = 1, n, k;

int main()
{
	freopen("kperm.in","r",stdin);
	freopen("kperm.out","w",stdout);
	
	long long i, p, one = 1, two = 1;
	
	scanf("%lld%lld", &n, &k);
	
	if(k % 2 == 0)
	{
		printf("0\n");
	}
	else
	{
		if(n % k == 0)
		{
			for(i = 1; i <= n / k; ++i)
			{
				one *= i;
				one %= modul;
			}
			p = k;
			for(i = 1; i <= p; ++i)
			{
				sol *= i;
				sol %= modul;
				sol *= one;
				sol %= modul;
			}
		}
		else
		{
			for(i = 1; i <= n / k; ++i)
			{
				one *= i;
				one %= modul;
			}
			two = one;
			one *= n / k + 1;
			one %= modul;
			p = n % k;
			for(i = 1; i <= p; ++i)
			{
				sol *= i;
				sol %= modul;
				sol *= one;
				sol %= modul;
			}
			for(i = 1; i <= k - p; ++i)
			{
				sol *= i;
				sol %= modul;
				sol *= two;
				sol %= modul;
			}
		}
		printf("%lld\n", sol);
	}
	
	
	
	return 0;
}