Cod sursa(job #2779784)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 4 octombrie 2021 22:17:20
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;

ifstream cin ( "dirichlet.in" );
ofstream cout ( "dirichlet.out" );

///formula este 2n! / (n+1)! / n! = ( (n+2) * (n+3) * ... 2n ) / n!

#define MOD 9999991

long long lg_put( long long base, long long power ) {
    long long p = 1;
    while ( power > 0 ) {
        if ( power % 2 == 1 )
            p = ( p * base ) % MOD;
        base = ( base * base ) % MOD;
        power = power / 2;
    }
    return p;
}

int main() {
    long long n, mod1, mod2, i;
    cin >> n;
    mod1 = 1;
    for ( i = n + 2; i <= 2 * n; i++ ) {
        mod1 = ( mod1 * i ) % MOD;
    }
    mod2 = 1;
    for ( i = 1; i <= n; i++ ) {
        mod2 = ( mod2 * i ) % MOD;
    }
    cout << ( mod1 * lg_put( mod2, MOD - 2 ) ) % MOD;
    return 0;
}