Pagini recente » Cod sursa (job #931781) | Cod sursa (job #2811711) | Cod sursa (job #421595) | Cod sursa (job #2409404) | Cod sursa (job #3206823)
#include<iostream>
#include<fstream>
using namespace std;
const int MOD=9999991, NMAX=1000000;
ifstream fin("dirichlet.in");
ofstream fout("dirichlet.out");
int fact[2*NMAX+2];
int n;
int inversmod(int a, int b)
{
int p=1;
while(b)
{
if(b&1)
p=1LL*p*a%MOD;
a=1LL*a*a%MOD;
b>>=1;
}
return p;
}
void factorial(int n)
{
fact[0]=fact[1]=1;
for(int i=2;i<=n;i++)
fact[i]=1LL*fact[i-1]*i%MOD;
}
int comb(int n, int k)
{
int num=fact[n], nm=1LL*fact[n-k]*fact[k]%MOD;
return 1LL*num*inversmod(nm,MOD-2)%MOD;
}
int main()
{
int n;
fin>>n;
factorial(2*n+1);
//cout<<comb(2*n,n)<<" ";
fout<<comb(2*n+1,n)*inversmod(2*n+1,MOD-2)%MOD;
fin.close();
fout.close();
return 0;
}