Cod sursa(job #636017)

Utilizator VmanDuta Vlad Vman Data 19 noiembrie 2011 16:20:28
Problema Dirichlet Scor 76
Compilator cpp Status done
Runda .com 2011 Marime 0.64 kb
#include <cstdio>

#define modulo 9999991

int N;

int invers(int A, int p)
{
    long long aux;

    if (p == 1) return A;
    aux = invers(A, p>>1);
    if (p&1) return (aux*aux*A) % modulo;
       else return (aux*aux) % modulo;
}

int catalan(int N)
{
    long long C;
    C = 1;
    for (int i=1; i<N; ++i)
    {
        C = (2*(2*i+1) * C) % modulo;
        C = (C * invers(i+2, modulo-2)) % modulo;
    }

    return C;
}

int main()
{
    freopen("dirichlet.in","r",stdin);
    freopen("dirichlet.out","w",stdout);
    
    scanf("%d", &N);
    printf("%d\n", catalan(N));        
        
    return 0;
}