Cod sursa(job #779645)

Utilizator visanrVisan Radu visanr Data 18 august 2012 14:12:44
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;

#define ll long long
#define MOD 9999991

ll N, C;

void InvMod(ll A, ll B, ll &X, ll &Y)
{
     if(B == 0LL)
     {
          X = 1LL;
          Y = 0LL;
          return ;
     }
     InvMod(B, A % B, X, Y);
     ll C, D = A / B;
     C = X;
     X = Y;
     Y = C - Y * D;
}


int main()
{
    ifstream in("dirichlet.in");
    ofstream out("dirichlet.out");
    ll i, A = 1, B = 1, invers = 0LL, C = 1LL, sol;
    in >> N;
    for(i = N + 2; i <= 2 * N; i++) A = (A * i) % MOD;
    for(i = 2; i <= N; i++) B = (B * i) % MOD;
    InvMod(B, MOD, invers, C);
    invers %= MOD;
    if(invers < 0) invers += MOD;
    out << (A * invers) % MOD << "\n";
    return 0;
}