Cod sursa(job #2460562)

Utilizator petrisorvmyVamanu Petru Gabriel petrisorvmy Data 23 septembrie 2019 22:05:08
Problema Dirichlet Scor 92
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define ll long long
#define mod 9999991

using namespace std;
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
ll n;
ll logpow(ll a, ll b)
{
    ll rez = 1;
    while(b)
    {
        if(b & 1)
            rez = (rez * a) % mod;
        a = (a * a) % mod;
        b >>= 1;
    }
    return rez;
}
ll invers(ll x)
{
    return logpow(x, mod - 2) % mod;
}
ll fact(ll x)
{
    ll rez = 1;
    for(ll i = 1; i <= x; ++i)
        rez = (rez * i) % mod;
    return rez;
}
ll comb(ll n, ll k)
{
    ll rez = fact(n);
    rez = (rez * invers(fact(k)) ) % mod;
    rez = (rez * invers( fact(n - k))  ) % mod;
    return rez;
}

int main()
{
    f >> n;
    g << (comb(2*n, n) - comb(2 * n, n - 1) +  mod) % mod;
    f.close();
    g.close();
    return 0;
}