Cod sursa(job #635465)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 19 noiembrie 2011 11:55:57
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.7 kb
#include<stdio.h>

#define mod 9999991
#define maxn 2000005

FILE*f=fopen("dirichlet.in","r");
FILE*g=fopen("dirichlet.out","w");

int n,i,j,k,sol;
int F[maxn];

inline int lgput ( int a , int b ){
	int p = a,s = 1;
	
	while ( b ){
		if ( b & 1 ){
			s = (1LL * s * p) % mod; 
		}
		p = (1LL * p * p) % mod;
		b >>= 1;
	}
	
	return s;
}

int main () {
	
	fscanf(f,"%d",&n);
	
	for ( F[0] = 1 , i = 1 ; i <= n + n ; ++i ){
		F[i] = (1LL * i * F[i-1]) % mod;
	}
	
	sol = (1LL * F[n<<1] * lgput(F[n],mod-2)) % mod;
	sol = (1LL * sol * lgput(F[n],mod-2)) % mod;
	sol = (1LL * sol * lgput(n+1,mod-2)) % mod;
	
	fprintf(g,"%d\n",sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}