Cod sursa(job #638520)

Utilizator ChallengeMurtaza Alexandru Challenge Data 20 noiembrie 2011 21:59:17
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

const char InFile[]="dirichlet.in";
const char OutFile[]="dirichlet.out";
const int MOD=9999991;
const int MaxN=2000111;

ifstream fin(InFile);
ofstream fout(OutFile);

int N;
long long sol,F2N,FN;

inline long long mypow(long long A, int B)
{
	long long sol=1;
	for(;B;B>>=1)
	{
		if((B&1)==1)
		{
			sol*=A;
			sol%=MOD;
		}
		A*=A;
		A%=MOD;
	}
	return sol;
}

int main()
{
	fin>>N;
	fin.close();
	
	F2N=1;
	for(register int i=2;i<=2*N;++i)
	{
		F2N=(F2N*i)%MOD;
		if(i==N)
		{
			FN=F2N;
		}
	}

	long long invFN=mypow(FN,MOD-2);
	long long invN1=mypow(N+1,MOD-2);
	sol=((((F2N*invFN)%MOD*invFN)%MOD)*invN1)%MOD;

	fout<<sol;
	fout.close();
	return 0;
}