Cod sursa(job #638055)

Utilizator proflaurianPanaete Adrian proflaurian Data 20 noiembrie 2011 18:27:22
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.65 kb
#include<iostream>
#include<cstdio>
#define tip long long
using namespace std;
struct sol{int x,y;};
sol p;
int cmmdc(int u,int v,sol& P);
tip n,up,down,i,k,invm(tip);
int main()
{
    freopen("dirichlet.in","r",stdin);
    freopen("dirichlet.out","w",stdout);
    cin>>n;up=down=1;
    for(i=2;i<=n;i++)
    {
        up=(up*(n+i))%9999991;
        down=(down*i)%9999991;
    }
    down=cmmdc((int)down,9999991,p);
    up=(up*p.x)%9999991;
    if(up<0)up+=9999991;
    cout<<up;
    return 0;
}
int cmmdc(int u, int v,sol& P)
{
	int w;sol Q;
    if (!v){P.x=1;P.y=0;return u;}
    w=cmmdc(v,u%v,Q);P.x=Q.y;P.y=Q.x-(u/v)*Q.y;return w;
}