Cod sursa(job #6473)

Utilizator alex_damianDamian Alexandru alex_damian Data 19 ianuarie 2007 19:00:38
Problema Patrate2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <cstring>


#define FIN "patrate2.in"
#define FOUT "patrate2.out"
#define MAXC 10001


long a[MAXC], b[MAXC], n, i, j;


void inm(int x) {
	int poz, c, ii;
	poz = 0;
  memset(b, 0, sizeof(b));
  do {
    c = x % 10;
    for (ii=1; ii<=a[0]; ii++) b[ii+poz] += a[ii] * c;
    x = (int) (x / 10);
    poz++;
  } while (x);
  b[0] = a[0];
  for (poz = 1; (poz<=b[0]) || (b[poz] != 0); poz++) {
     b[poz+1] += (long) (b[poz] / 100000);
     b[poz] = b[poz] % 100000;
  }
	b[0] = poz - 1;
	for (poz = 0; poz <= b[0]; poz++) a[poz] = b[poz];
}

int main () {
	freopen(FIN, "r", stdin);
  freopen(FOUT, "w", stdout);
  scanf("%d", &n);
  a[0] = a[1] = 1;
  for (i=2; i<=n; i++)
     inm(i);
  for (i=1; i<=n*n; i++)
     inm(2);
  printf("%ld", a[a[0]]);
  for (i=a[0]-1; i>0; i--) {
     if (a[i] < 100000) printf("0");
     if (a[i] < 10000) printf("0");
     if (a[i] < 1000) printf("0");
     if (a[i] < 100) printf("0");
     if (a[i] < 10) printf("0");
     if (a[i] < 1) printf("0");
     printf("%ld", a[i]);
  }
  printf("\n");
  return 0;
}