Cod sursa(job #637925)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 20 noiembrie 2011 17:36:10
Problema Dirichlet Scor 80
Compilator cpp Status done
Runda .com 2011 Marime 0.79 kb
#include <fstream>
#include <cstdio>
#define ll long long

using namespace std;

ifstream f("dirichlet.in");
ofstream g("dirichlet.out");

long long n,r=1,m=9999991,i,fact=1,inv=0,ins,inp1;


void gcd(long long  &x, long long &y, long long  a, long long b)
{
     if (!b)
         x = 1, y = 0;
     else
     {
         gcd(x, y, b, a % b);
         long long aux = x;
         x = y;
         y = aux - y * (a / b);
     }
}

int main () {
    f >> n;
    for (i=n+1;i<=2*n;i++) {
        r=(r*i)%m;
        ins=0;inv=0;
        gcd(inv, ins, i-n, m);
        if (inv <= 0) inv = m + inv % m;
        r=r*inv%m;
    }
    inv=0;
    gcd(inv, ins, n+1, m);
    if (inv <= 0) inv = m + inv % m;
    r=r*inv%m;
    g << r << '\n';
    f.close();g.close();
    return 0;
}