Cod sursa(job #636674)

Utilizator ChallengeMurtaza Alexandru Challenge Data 19 noiembrie 2011 22:28:53
Problema Dirichlet Scor 92
Compilator cpp Status done
Runda .com 2011 Marime 0.72 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,F[MaxN];

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();
	
	F[0]=1;
	F[1]=1;
	for(register int i=2;i<=2*N;++i)
	{
		F[i]=(F[i-1]*i)%MOD;
	}

	long long invFN=mypow(F[N],MOD-2);
	long long invN1=mypow(N+1,MOD-2);
	sol=((((F[2*N]*invFN)%MOD*invFN)%MOD)*invN1)%MOD;

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