Cod sursa(job #1167692)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 5 aprilie 2014 18:53:57
Problema Kperm Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
using namespace std;
ifstream in("kperm.in");
ofstream out("kperm.out");

const long long mod = 666013, nmax = 5006;
long long fact[nmax], n, k, rasp;

void mfact(){
	fact[0] = 1;
	for(long long i = 1; i<nmax; i++)
		fact[i] = (fact[i-1] * i) % mod;
}

long long xlay(long long x, long long y)
{
	long long p = 1;
	while(y!=0)
	{
		if(y%2==1)
		{
			p = (p * x)%mod;
			y--;
		}
		x = x * x;
		y = y / 2;
	}

	return p;
}

int main(){
	int player_unu=0;

	mfact();

	in>>n>>k;
	if(k%2==1)
	{
		rasp = (fact[k - n % k] * fact[n % k] % mod) * (xlay(fact[n/k+1], n%k) * xlay(fact[n/k], k-n%k) % mod) % mod;
	}

	out<<rasp<<'\n';
	return player_unu;
}