Cod sursa(job #315495)

Utilizator andreioneaAndrei Onea andreionea Data 16 mai 2009 01:44:51
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
long long p;
unsigned long long fact(unsigned long long k)
{unsigned long long rez=0,cat;
 cat=k/5;
 while(cat)
	{rez+=cat;
	 cat/=5;
	 }
 return rez;
}
int main()
{FILE *f=fopen("fact.in","r");
 FILE *g=fopen("fact.out","w");
 unsigned long long st,dr,c,aux,cc;
 fscanf(f,"%lld",&p);
 fclose(f);
 if(p==0)
   {fprintf(g,"1");
			 fclose(g); 
			 return 0;
			 }
 dr=1<<31;
 dr/=5;
 dr-=dr%5;
 st=1;

 while(st<dr)
	{
          c=st+dr; c>>=1;
 	     cc=c*5;	
	     aux=fact(cc);
	     if(aux<p) st=c+1;
		else if(aux>p) dr=c-1;
			else 	
			{fprintf(g,"%lld",cc);
			 fclose(g); 
			 return 0;
			 }
	     
	
	}
 if(st==dr && fact(st*5)==p) 
		{fprintf(g,"%lld",st*5);
			 fclose(g); 
			 return 0;
			 }
 fprintf(g,"-1");
 fclose(g); 
 return 0;
}