Cod sursa(job #1181729)

Utilizator catalinrebegeaUNIBUC-Claudia Catarig catalinrebegea Data 3 mai 2014 16:16:17
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#define MOD 9999991
#define Nmax 1000000

using namespace std;

int fact[2*Nmax+5];

inline void PreCalcul()
{
    int i;
    fact[0]=1;
    for(i=1;i<=2000000;++i)
        fact[i]=(1LL*fact[i-1]*i)%MOD;
}

inline int Pow_Log(int x, int p)
{
    int put=1;
    while(p)
    {
        if(p&1)
        {
            put=(1LL*put*x)%MOD;
            --p;
        }
        p>>=1;
        x=(1LL*x*x)%MOD;
    }
    return put;
}

int main()
{
    int N,aux;
    freopen ("dirichlet.in","r",stdin);
    freopen ("dirichlet.out","w",stdout);
    PreCalcul();
    scanf("%d", &N);
    aux=(1LL*(1LL*Pow_Log(fact[N],MOD-2)*Pow_Log(fact[N],MOD-2))%MOD*Pow_Log(N+1,MOD-2))%MOD;
    printf("%d\n", (1LL*fact[2*N]*aux)%MOD);
    return 0;
}