Cod sursa(job #735711)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 17 aprilie 2012 10:05:30
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<iostream>
#include<fstream>
using namespace std;
void gcd(int &x, int &y, int a, int b)  
{  
	int aux;
	if (b==0) {  
		x = 1;
		y = 0;  
	}
	else  {             
		gcd(x,y,b,a % b);
		aux=x;
		x=y;
		y=aux-y*(a/b);
	}
}
int combinari(int n, int k)
{
	int i,a,b,inv,ins;
	a=1;
	for(i=k+1;i<=n;i++) 
		a=(1LL*a*i)%9999991;
	b=1;
	for(i=1;i<=k;i++)
		b=(1LL*b*i)%9999991;
	gcd(inv,ins,b,9999991);
	if(inv<=0)
		inv=9999991+inv%9999991;
	a=(1LL*a*inv)%9999991;
	return a;
}
int main ()
{
	int c,inv,ins,n;
	ifstream f("dirichlet.in");
	ofstream g("dirichlet.out");
	f>>n;
	f.close();
	c=combinari(2*n,n);
	gcd(inv,ins,n+1,9999991);
	if(inv<=0)
		inv=9999991+inv%9999991;
	c=(1LL*c*inv)%9999991;
	g<<c;
	g.close();
	return 0;
}