Pagini recente » Cod sursa (job #595712) | Cod sursa (job #2767245) | Cod sursa (job #1798231) | Cod sursa (job #1306800) | Cod sursa (job #639221)
Cod sursa(job #639221)
#include<stdio.h>
#define Mod 9999991
#define ll long long
int N,N1 = 1,N2 = 1,N3,Catalan;
int euclid(int A,int B,int &X,int &Y)
{
if(B == 0)
{
X = 1; Y = 0;
return A;
}
int D = euclid(B,A%B,X,Y);
int C = X; X = Y; Y = C - (A/B)*Y;
return D;
}
int lgput(int N,int baza,int exp)
{
if(exp == 1)
return N;
baza = lgput(N,baza,exp/2);
baza = (1LL*baza*baza)%Mod;
if(exp&1) baza = (1LL*baza*N)%Mod;
return baza;
}
int main()
{
FILE *f = fopen("dirichlet.in","r");
FILE *g = fopen("dirichlet.out","w");
fscanf(f,"%d ",&N);
for(int i=2;i<=2*N;i++)
N1 = (1LL*N1*i)%Mod;
for(int i=2;i<=N;i++)
N2 = (1LL*N2*i)%Mod;
ll invN2 = lgput(N2,N2,Mod-2);
ll invN3 = lgput(N+1,N+1,Mod-2);
Catalan = (((((1LL*N1*invN2)%Mod)*1LL*invN2)%Mod)*1LL*invN3)%Mod;
fprintf(g,"%d ",Catalan);
fclose(g);
fclose(f);
return 0;
}