Cod sursa(job #75509)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 2 august 2007 15:10:43
Problema Patrate2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
# include <stdio.h>

const long long int BAZA=1000000;
const long long int NCFB=6;
const long long int MAXL=1000000;
typedef struct NUMAR {long long int len, v[MAXL+1];};
//NUMAR sol,staple;
long long int n;

void clear_num(NUMAR &a) {a.len=0;long long int i;for (i=0;i<=MAXL;i++) a.v[i]=0;}

void inmulteste_nr(NUMAR &sol, long long int nr)
{
long long int i;
for (i=1;i<=sol.len;i++) sol.v[i]*=nr;
i=1;
while (i<sol.len||sol.v[i]>=BAZA)
	{
	sol.v[i+1]+=sol.v[i]/BAZA;
	sol.v[i]/=BAZA;
	i++;
	}
if (i>sol.len) sol.len=i;
}

void citire()
{
FILE *f=fopen("patrate2.in","r");
fscanf(f,"%lld",&n);
fclose(f);
}

long long int ncf(long long int a) {if (a==0) return 1;long long int sol=0; while (a) {sol++;a/=10;} return sol;}

void scrie(NUMAR a)
{
FILE *g=fopen("patrate2.out","w");
long long int j,nrcf,i=a.len;
fprintf(g,"%lld",a.v[i]);
i--;
while (i)
	{
	nrcf=ncf(a.v[i]);
	for (j=nrcf+1;j<=NCFB;j++) fprintf(g,"0");
	fprintf(g,"%lld",a.v[i]);
	i--;
	}
fprintf(g,"\n");
}

int main()
{
citire();
NUMAR rez;clear_num(rez);
rez.len=1;rez.v[1]=1;
long int i;
for (i=1;i<=n*n;i++) inmulteste_nr(rez,2);
for (i=2;i<=n;i++)   inmulteste_nr(rez,i);
scrie(rez);
fcloseall();
return 0;
}