Cod sursa(job #202531)

Utilizator neagu1000123Neagu Rares Florian neagu1000123 Data 9 august 2008 14:03:52
Problema Factorial Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <values.h>
#include <math.h>
long zerouri(long n)
{
 	 long zero=0;
 	 int i;
 	 for (i=1;i<=n;i++)
 	 {
	 	  if (pow(5,i)<=n)
	  	  {
		  	  	  zero+=n/pow(5,i);
		  } else break;
	 }
	 return zero;
}

long p,rez=0;
int main()		
{
 	 freopen("fact.in","r",stdin);
 	 freopen("fact.out","w",stdout);
	 scanf("%ld",&p);
 long st=0,dr=200000000; 	 
	 long m=0;
	 long rasp=0,cate=0,temp=0;
	 if (p!=0)
	 {
	  	 while (st<=dr)
	  	 {
		  		 m=(st+dr)/2;
		  		 temp=zerouri(m);
		  		 if (p==temp)
		  		 {
				  	 rasp=m;
				  	 cate=temp;
			  	 	 break;
			    }
	    		 if (p<temp)
	    		 {
				  	 dr=m-1;
				 } else st=m+1;
		 }
	 } else
	 {
	 printf("1");
	 return 0;
	 }
	 while (zerouri(rasp)==cate)
	 		 rasp-=2;
	 if (zerouri(rasp+1)==cate) printf("%ld",rasp+1); 
	 else
	 if (zerouri(rasp+2)==cate) printf("%ld",rasp+2);

//	 printf("%ld",zerouri(p));
 	 return 0;
}