Cod sursa(job #2337204)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 6 februarie 2019 01:10:44
Problema Dirichlet Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
#define MOD 9999991

using namespace std;

ifstream fin  ("dirichlet.in");
ofstream fout ("dirichlet.out");

long long n, i, f1, f2, f3, p, x, y, k;

inline long long euclidpp (long long a, long long b, long long &x, long long &y){
    long long xa, ya, d;
    if (b == 0){
        y = 0, x = 1;
        return a;
    }
    else{
        d = euclidpp (b, a%b, xa, ya), x = ya, y = xa - a/b*ya;
        return d;
    }
}

int main(){
    fin >> n;
    f1 = 1;
    for (i=1; i<=n; i++){
        f1 = f1 * i;
        if (f1 > MOD){
            f1 -= MOD;
        }
    }
    f2 = 1;
    for (i=1; i<=n+1; i++){
        f2 = f2 * i;
        if (f2 > MOD){
            f2 -= MOD;
        }
    }
    f3 = 1;
    for (i=1; i<=2*n; i++){
        f3 = f3 * i;
        if (f3 > MOD){
            f3 -= MOD;
        }
    }
    p = (f1*f2);
    if (p > MOD){
        p -= MOD;
    }
    euclidpp (p, MOD, x, y);
    if (x < MOD){
        x -= MOD;
    }
    if (x < 0){
        x += MOD;
    }
    k = f3*x;
    while (k >= MOD){
        k -= MOD;
    }
    fout << k;
    return 0;
}