Cod sursa(job #635551)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 19 noiembrie 2011 13:08:37
Problema Dirichlet Scor 8
Compilator cpp Status done
Runda .com 2011 Marime 0.96 kb
#include <cstdio>
#include <vector>

using namespace std;

#define file_in "dirichlet.in"
#define file_out "dirichlet.out"

#define mod 9999991

int A[mod];
int n;

    
void mul(int A[], int B)
{
      int i, t = 0;
      for (i = 1; i <= A[0] || t; i++, t /= 10)
              A[i] = (t += A[i] * B) % 10;
      A[0] = i - 1;
}

void div(int A[], int B)
{
      int i, t = 0;
      for (i = A[0]; i > 0; i--, t %= B)
              A[i] = (t = t * 10 + A[i]) / B;
      for (; A[0] > 1 && !A[A[0]]; A[0]--);
}

int Mod(int A[], int B)
{
      int i, t = 0;
      for (i = A[0]; i > 0; i--)
              t = (t * 10 + A[i]) % B;
      return t;
}

int main(){
	
	int i;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &n);
	
	A[0]=A[1]=1;
	for (i=n+1;i<=2*n;++i)
		 mul(A,i);
	for (i=2;i<=n;++i)
		 div(A,i);
	div(A,n+1);
	Mod(A,mod);
	for (i=A[0];i>=1;--i)
		 printf("%d", A[i]);
	
	return 0;
	
}