Cod sursa(job #2629463)

Utilizator RaduhhRadu Flocea Raduhh Data 20 iunie 2020 22:47:38
Problema Dirichlet Scor 88
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#define ll long long
using namespace std;

ll n, mod = 9999991, primu, doilea;

ll lgput (ll n, ll p)
{
    ll aux = 1;
    while(p) {
        if(p % 2 == 1) aux = (aux * n) % mod;
        n = (n * n) % mod;
        p /= 2;
    }
    return aux;
}

ll inv(ll a){
    return lgput(a,mod-2);
}

void fact(ll n){
    ll pr = 1;
    for (ll i=2; i<=n; i++)
        pr = (pr * i) % mod;
    
    primu = inv((pr*pr*(n+1))%mod);
    
    for (ll i=n+1; i<=2*n; i++)
        pr = (pr * i) % mod;
        
    doilea = pr;
}

int main() 
{
    ifstream cin("dirichlet.in");
    ofstream cout("dirichlet.out");
    cin>>n;
    fact(n);
    cout<<(doilea*primu)%mod;
    //am pierdut multi nervi pe pr0blema asta :( dypepoc
}