Cod sursa(job #638748)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 21 noiembrie 2011 16:04:18
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 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+2;i<=2*n;i++) r=(r*i)%m;
    for (i=1;i<=n;i++) fact=fact*i%m;
    ins=0;inv=0;
    gcd(inv, ins, fact, m);
    if (inv <= 0) inv = m + inv % m;
    r=r*inv%m;
    g << r << '\n';
    f.close();g.close();
    return 0;
}