Cod sursa(job #708031)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 6 martie 2012 11:41:29
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
//
// (2n)!/n!/n!/(n+1)
// =(2n)!/(n!*n!*(n+1))
// =(n+2)*(n+3)*...*(2n)/n!
//
#include <fstream>
#define MOD 9999991
using namespace std;

long long A,B,Sol,X=1,Y,tmp;

void inversMod(int a,int b) {
	
	if(b) {
		inversMod(b,a%b);
	
		tmp=X;
		X=Y;
		Y=tmp-Y*(a/b);
		}
	
}
int main() {
	
	int i,n;
	ifstream in("dirichlet.in");
	ofstream out("dirichlet.out");
	in>>n;
	
	for(i=n+2,A=1;i<=2*n;i++)
		A=(A*i)%MOD;
	
	for(i=2,B=1;i<=n;i++)
		B=(B*i)%MOD;
	
	inversMod(B,MOD);
	
	while(X<=0)
		X+=MOD;
	Sol=(A*X)%MOD;
	
	out<<Sol<<'\n';
	
	in.close();
	out.close();
	
	return 0;
	
}