Cod sursa(job #644785)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 7 decembrie 2011 18:06:06
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
// eudanip
#include<stdio.h>

#define ll long long
#define MOD 9999991

ll n,nf,inf,psup,sol;

ll rid_log(ll val,ll put)
{
	if(put==1)
		return val;
	ll val2=rid_log(val,put/2);
	if(put&1)
		return (((val2*val2)%MOD)*val)%MOD;
	return (val2*val2)%MOD;	
}

int main ()
{
	ll i;

	freopen("dirichlet.in","r",stdin);
	freopen("dirichlet.out","w",stdout);
	scanf("%lld",&n);
	nf=1;
	for(i=1;i<=n;i++)
	{
		nf*=i;
		if(nf>=MOD)
			nf%=MOD;
	}
	inf=rid_log(nf,MOD-2);
	psup=1;
	for(i=n+2;i<=2*n;i++)
	{
		psup*=i;
		if(psup>=MOD)
			psup%=MOD;
	}
	sol=(psup*inf)%MOD;
	printf("%lld\n",sol);
	return 0;
}