Cod sursa(job #3209459)

Utilizator Mihai_999Diaconeasa Mihai Mihai_999 Data 2 martie 2024 14:30:52
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#define nl '\n'

using namespace std;

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

const int MOD = 9999991;

int n, factN, fact;


int lgpow(int b, int pow)
{
    int p = 1;
    while (pow)
    {
        if (pow&1)
            p = (1LL*p*b)%MOD;
        b = (1LL*b*b)%MOD;
        pow>>=1;
    }
    return p;
}

int invmod(int x)
{
    return lgpow(x, MOD-2);
}

int main()
{
    fin >> n;
    fact = 1;
    for (int i = 1; i <= 2*n; i++)
    {
        fact = (1LL*fact*i)%MOD;
        if (i == n)
            factN = fact;
    }
    factN = (1LL*factN*factN)%MOD;
    int ans = (1LL*fact*invmod(factN))%MOD;
    ans = (1LL*ans*invmod(n+1))%MOD;
    fout << ans;
    return 0;
}