Cod sursa(job #315493)

Utilizator andreioneaAndrei Onea andreionea Data 16 mai 2009 01:26:25
Problema Factorial Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.8 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;
 fscanf(f,"%lld",&p);
 fclose(f);
 if(p==0)
   {fprintf(g,"1");
			 fclose(g); 
			 return 0;
			 }
 dr=1<<31;
 st=0;

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