Cod sursa(job #1786593)

Utilizator silkMarin Dragos silk Data 23 octombrie 2016 12:57:43
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>
#define ll long long

const int MOD = 9999991;

ll lgput(int X,int B)
{
    int A=1;
    while(B>1)
    {
        if(B%2) { A=(1LL*A*X)%MOD; X=(1LL*X*X)%MOD; }
        else X=(1LL*X*X)%MOD;
        B/=2;
    }
    return ( 1LL*A*X ) % MOD;
}

int main(){
    freopen("dirichlet.in","r",stdin);
    freopen("dirichlet.out","w",stdout);

    int i,N;
    ll X,inv,up;

    scanf("%d",&N);
    for(up = 1, i = N+2; i <= 2*N; ++i) up = ( up * i ) % MOD;
    for(X = 1, i = 2; i <= N; ++i) X = ( X * i ) % MOD;
    inv = lgput(X,MOD-2);

    printf("%d\n", ( inv * up ) % MOD );



return 0;
}