Cod sursa(job #697343)

Utilizator costyv87Vlad Costin costyv87 Data 29 februarie 2012 02:36:15
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
FILE *f,*g;
typedef int Huge[10000];
int z[10000];
Huge H;
int n,i,cn,cn2,j;

void Mult(int X)
{ int i;
  int T=0;

  for (i=1;i<=H[0];i++)
    { H[i]=H[i]*X+T;
      T=H[i]/10000;
      H[i]=H[i]%10000;
    }
  while (T) 
    { H[++H[0]]=T%10000;
      T/=10000;
    }
}

inline int nrcif(int x) {
int cn=0;
while (x) {
	cn++;
	x/=10;
	}	
if (cn==0) cn=1;
return cn;
}

int main() {
f=fopen("patrate2.in","r");
g=fopen("patrate2.out","w");

fscanf(f,"%d",&n);

H[0]=H[1]=1;

for (i=1;i<=n;i++) 
	Mult(i);
n*=n;
for (i=1;i<=n;i++) 
	Mult(2);

cn=4; cn2=nrcif(H[1]);
z[1]=0;

for (i=2;i<=H[0];i++) {
	z[i]=cn-cn2;
	cn2=nrcif(H[i]);
	}
for (i=H[0];i>=1;i--) {
	fprintf(g,"%d",H[i]);
	for (j=1;j<=z[i];j++) fprintf(g,"0");
	}

fclose(g);
return 0;
}