Cod sursa(job #1948750)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 1 aprilie 2017 13:14:21
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

const long long MOD = 9999991 ;


int CalcProd ( int x , int y ){
    static int i ;
    static long long prod ;

    prod = 1 ;

    for ( i = x ; i <= y ; i ++ ){
        prod = prod * 1LL * i ;
        prod %= MOD;
    }

    return prod ;
}


int CalcFastExponent ( int x , int power ){
    long long temp ;

    if ( power == 1 ){
        return x % MOD  ;
    }

    temp = CalcFastExponent( x , power / 2 );

    temp = temp * temp % MOD ;

    if ( power % 2 ){
        return (temp * x)%MOD  ;
    }

    return temp ;
}

int main(){
    long long sum ;
    int n ;

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

    scanf("%d",&n);

    sum = CalcProd( n + 2 , 2 * n );

    sum = ( sum * CalcFastExponent ( CalcProd( 1 , n ) , MOD - 2 ) ) %MOD ;


    printf("%d", sum );
//    printf("%d", CalcFastExponent( MOD , MOD-1 ) );

    return 0;
}