Cod sursa(job #638861)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 21 noiembrie 2011 19:44:45
Problema Dirichlet Scor 96
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb

#include <fstream>
#include <cstdio>

using namespace std;

#define m 9999991

int n,f[2000001],sol;

int put (int x,int y)
{
	int rz=1;
	for(;y;y>>=1)
	{
		if(y&1)
			rz=(1LL*rz*x)%m;
		x=(1LL*x*x)%m;
	}
	return rz;
}

int comb (int x,int y){
	return (((1LL*f[x]*put(f[x-y],m-2))%m)*put(f[y],m-2))%m;}

int main ()
{
	ifstream in ("dirichlet.in");
	in>>n;
	f[0]=1;
	int nn=(n<<1);
	for(int i=1;i<=nn;++i)
		f[i]=(1LL*f[i-1]*i)%m;
	sol=comb(n<<1,n)-comb(n<<1,n+1);
	if(sol<0)
		sol+=m;
	freopen ("dirichlet.out","w",stdout);
	printf("%d",sol);
	return 0;
}