Cod sursa(job #637190)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 20 noiembrie 2011 12:50:39
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.65 kb
#include <cstdio>

#define MOD 9999991
#define ll long long

ll N, i, Sus, Jos, X, Y, Rez;

inline void Euclid( ll A, ll B, ll &X, ll &Y )
{
	if( !B )
	{
		X = 1;
		Y = 0;
		return;
	}
	
	ll X0, Y0;
	Euclid( B, A%B, X0, Y0 );
	Y = X0 - ( A/B )*Y0;
	X = Y0;
}

int main()
{
	freopen("dirichlet.in", "r", stdin);
	freopen("dirichlet.out", "w", stdout);
	
	scanf("%lld", &N);
	
	Sus = Jos = 1;
	for( i = N + 2; i <= 2*N; ++i )
		Sus = ( Sus *= i )%MOD;
	for( i = 2; i <= N; ++i )
		Jos = ( Jos *= i )%MOD;
	
	Euclid( Jos, MOD, X, Y );
	for( ; X < 0; X += MOD );
	
	Rez = ( Sus * X )%MOD;
	printf("%lld\n", Rez);
	
	return 0;
}