Cod sursa(job #1557061)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 26 decembrie 2015 17:46:39
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;

const int MOD = 666013;

int n, k;

int fact(int n) {
	int ret = 1;
	
	for(int i = 2; i <= n; ++i) {
		ret = (1LL * ret * i) % MOD;
	}

	return ret;
}

int expo(int a, int b) {
	int ret = 1;
	
	while(b) {
		if(b % 2) {
			ret = (1LL * ret * a) % MOD;
		}
		a = (1LL * a * a) % MOD;
		b /= 2;
	}
	
	return ret;
}

int main() {
	ifstream f("kperm.in");
	ofstream g("kperm.out");
	
	f >> n >> k;
	
	int ans;
	if(k % 2 == 0) {
		ans = 0;
	}
	else {
		ans = (1LL * fact(n % k) * fact(k - (n % k))) % MOD;
		ans = (1LL * ans * expo(fact(n / k + 1), n % k)) % MOD;
		ans = (1LL * ans * expo(fact(n / k), k - (n % k))) % MOD;
	}
	
	g << ans << "\n";
	
	f.close();
	g.close();
	
	return 0;
}