Cod sursa(job #116197)

Utilizator razvanelu99Razvan Andrus razvanelu99 Data 17 decembrie 2007 22:26:16
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<stdio.h>
int main()
{
FILE *fin,*fout;
fin= fopen ("fact.in","r");
fout= fopen ("fact.out","w");
long int p,n=0,m,c=1;
fscanf(fin,"%D",&p);
while (p/5)
     {
     n+=25;
     p=p-4;
     m=n;
     while (m%5==0)
	  {
	  if (m%5==0) p--;
	  m/=5;
	  if (p==0&&m%5==0) c=0;
	  if (!c) break;
	  }
     if (!c) break;
     }
if (c)
  while (p)
     {
     n++;
     m=n;
     while (m%5==0)
	  {
	  if (m%5==0)
	    {
	    p--;
	    //c5++;
	    }
	  m/=5;
	  if (p==0&&m%5==0) c=0;
	  if (!c) break;
	  }
     /*while (m%2==0)
	  {
	  if (m%2==0) c2++;
	  m/=2;
	  }*/
     if (!c) break;
     }
/*while (c&&c2<c5)
     {
     n++;
     if (n%5==0) c=0;
     m=n;
     while (m%2==0)
	  {
	  if (m%2==0) c2++;
	  m/=2;
	  }
     }
long int s=1;
while (p>0)
     {
     n++;
     s=s*n;
     while (s%10==0)
	  {
	  p--;
	  s/=10;
	  }
     s=s%10;
     }
int c=0;
while (n%10==0)
     {
     c++;
     n/=10;
     } */
long inv=0;
if (!c) fprintf (fout,"%d",-1);
else
   {
   while (n)
	{
	inv=inv*10+n%10;
	n/=10;
	}
   while (inv)
	{
	fprintf (fout,"%d",inv%10);
	inv/=10;
	}
   for (int i=1;i<=c;i++) fprintf (fout,"%d",0);
   }
fclose(fin);
fclose(fout);
return 0;
}