Cod sursa(job #228460)

Utilizator ditiBilescu Adrian diti Data 7 decembrie 2008 12:19:39
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
/*
#include<stdio.h>
#include<math.h>
FILE*g=fopen("factorial.out","w");
long p,a[13][3],i,j,n,q;

int main()
{p=1;
   fprintf(g,"a[0][1]=0; a[0][2]=1;\n");
for(i=1,j=1;i<=13;++i,j=1)
 {
   q=q+p;
   fprintf(g,"a[%ld][%ld]=%ld; ",i,j,q);
	j=2;
	p=pow(5,i);
   fprintf(g,"a[%ld][%ld]=%ld;\n",i,j,p);


  }
return 0;
}      */

#include<stdio.h>
FILE*f=fopen("factorial.in","r"),*g=fopen("factorial.out","w");
long a[13][3],i,j,n,p,r,nr;

int main()
{
a[0][1]=0; a[0][2]=1;
a[1][1]=1; a[1][2]=5;
a[2][1]=6; a[2][2]=25;
a[3][1]=31; a[3][2]=125;
a[4][1]=156; a[4][2]=625;
a[5][1]=781; a[5][2]=3125;
a[6][1]=3906; a[6][2]=15625;
a[7][1]=19531; a[7][2]=78125;
a[8][1]=97656; a[8][2]=390625;
a[9][1]=488281; a[9][2]=1953125;
a[10][1]=2441406; a[10][2]=9765625;
a[11][1]=12207031; a[11][2]=48828125;
a[12][1]=61035156; a[12][2]=244140625;
a[13][1]=305175781; a[13][2]=1220703125;


 fscanf(f,"%ld",&p);
 if(!p) {fprintf(g,"1"); return 0;}

 for(i=1;a[i][1]<=p;++i);

 for(j=i-1;j>0 ;j--)
   {nr=0;
   while(p-a[j][1]>=0)
	{p-=a[j][1];
	 nr++;
	}
	r+=a[j][2]*nr;
   }
 fprintf(g,"%ld",r);

return 0;
}