Cod sursa(job #2710862)

Utilizator FrostfireMagirescu Tudor Frostfire Data 23 februarie 2021 11:00:53
Problema Dirichlet Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#define ll long long
#define NMAX 1000000
#define MOD 9999991

using namespace std;

ifstream fin("dirichlet.in");
ofstream fout("dirichlet.out");

ll n, fact[2*NMAX+10];

void precalc()
{	fact[0] = 1;
	for(int i=1; i<=2*NMAX; i++)
		fact[i] = fact[i-1] * i % MOD;
}

ll lgput(ll a, ll n)
{	if(!n) return 1;
	if(n % 2 == 0) return lgput(a*a % MOD, n/2);
	return a * lgput(a*a % MOD, n/2) % MOD;
}

ll C(ll n, ll k)
{	ll val1 = fact[n], val2 = fact[k] * fact[n-k];
	return val1 * lgput(val2, MOD - 2) % MOD;
}

int main()
{
	precalc();
	fin >> n;
	fout << C(2 * n, n) * lgput(n + 1, MOD - 2) % MOD;
	return 0;
}