Cod sursa(job #638406)

Utilizator darrenRares Buhai darren Data 20 noiembrie 2011 20:53:03
Problema Dirichlet Scor 92
Compilator cpp Status done
Runda .com 2011 Marime 0.75 kb
#include <fstream>

using namespace std;

const int MOD = 9999991;
int N;

inline int power(int x, int y)
{
	if (y == 0) return 1;
	if (y % 2 == 0) return power(1LL * x * x % MOD, y >> 1);
	return (1LL * x * power(1LL * x * x % MOD, y >> 1)) % MOD;
}
inline int inv(int x)
{
	return power(x, MOD - 2);
}
inline int comb(int x, int y)
{
	int numnow = 1, imp = 1;
	for (int i = y + 1; i <= x; ++i)
		numnow = (1LL * numnow * i) % MOD;
	for (int i = 2; i <= x - y; ++i)
		imp = (1LL * imp * i) % MOD;
	return 1LL * numnow * inv(imp) % MOD;
}

int main()
{
	ifstream fin("dirichlet.in");
	ofstream fout("dirichlet.out");
	
	fin >> N;
	
	int result = comb(2 * N, N) - comb(2 * N, N + 1);
	if (result < 0) result += MOD;
	
	fout << result;
	
	fin.close();
	fout.close();
}