Cod sursa(job #268756)

Utilizator warangeldinu sorin warangel Data 1 martie 2009 19:21:39
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
//#include<conio.h>
inline unsigned  long getfive(unsigned  long x)
{
	unsigned long n=0;
   while(x%5==0)
   {
   	n++;
      x/=5;
   }
   return n;
}
int main()
{
	unsigned  long nr,in=0,out=0,i;
   FILE *fi,*fo;
   fi=fopen("fact.in","r");
   fo=fopen("fact.out","w");
   fscanf(fi,"%llu",&nr);
   nr*=5;
   if(!nr)
   {
   	printf(fo,"1");
      return 0;
   }
   for(i=25;i<=nr;i+=25)
   {
   	if(i==nr){in=0;out=1;break;}
		in+=getfive(i)-1;
      //printf("testam pt i=%lu; acesta aduce %lu 5-uri. in devine %lu\n",i,getfive(i)-1,in);getch();
      while(out<in)
      {
      	//printf("scoatem %lu. pierdem 1 5-uri(out:%lu). nr devine %lu\n",nr,out+1,nr-5);getch();
      	out++;
         nr-=5;
      }
   }
   //printf("terminat. nr este %lu; in:%lu out:%lu",nr,in,out);getch();
   if(in!=out)fprintf(fo,"-1");
   else fprintf(fo,"%llu",nr);
   return 0;
}