Cod sursa(job #637188)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 20 noiembrie 2011 12:48:29
Problema Dirichlet Scor 24
Compilator cpp Status done
Runda .com 2011 Marime 0.69 kb
#include <cstdio>

#define MOD 9999991

int N, i, Sus, Jos, X, Y;
long long Rez, S, XX;

inline void Euclid( int A, int B, int &X, int &Y )
{
	if( !B )
	{
		X = 1;
		Y = 0;
		return;
	}
	
	int 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("%d", &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 );
	
	S = (long long)Sus;
	XX = (long long)X;
	Rez = ( S * XX )%MOD;
	printf("%lld\n", Rez);
	
	return 0;
}