Cod sursa(job #2337205)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 6 februarie 2019 01:11:55
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 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;
        f1 %= MOD;
    }
    f2 = 1;
    for (i=1; i<=n+1; i++){
        f2 = f2 * i;
        f2 %= MOD;
    }
    f3 = 1;
    for (i=1; i<=2*n; i++){
        f3 = f3 * i;
        f3 %= MOD;
    }
    p = (f1*f2)%MOD;
    euclidpp (p, MOD, x, y);
    x %= MOD;
    if (x < 0){
        x += MOD;
    }
    fout << (f3*x)%MOD;
    return 0;
}