Cod sursa(job #639357)

Utilizator Teodor94Teodor Plop Teodor94 Data 23 noiembrie 2011 08:43:35
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>

const int MOD = 9999991;

int n;

int lgput(int x, int exp) {
    if (exp == 0)
        return 1;

    int prod  = 1;

    while (exp) {
        if (exp & 1)
            prod = (long long) prod * x % MOD;

        x = (long long) x * x % MOD;

        exp >>= 1;
    }

    return prod;
}

void rez() {
    int rez1 = 1, rez2 = 1;

    for (int i = n + 2; i <= 2 * n; ++i)
        rez1 = (long long)rez1 * i % MOD;

    for (int i = 2; i <= n; ++i)
        rez2 = (long long)rez2 * i % MOD;

    int r = ((long long) rez1 * lgput(rez2, MOD - 2)) % MOD;

    printf("%d\n", r);
}

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

    scanf("%d", &n);

    rez();

    return 0;
}