Cod sursa(job #87817)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 29 septembrie 2007 12:05:22
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<math.h>

long long aux,sol,vb1,lim1,lim2,zero,p;

int catezero(long long mij)
{
	zero=0;
	aux=mij;
	while(aux>=5)
	{
		zero=zero+aux/5;
		aux=aux/5;
	}
if(zero>p) {lim2=mij; return 0;}
else
if(zero<p) {lim1=mij+1; return 0;}
else return 1;
}

int main()
{
	//freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%lld",&p);
	if(p==0) {printf("1"); return 0;}
	aux=p;
	/*while(aux%5==0)
	{
		aux=aux/5;
		vb1=1;
	}
	if(aux==1 && vb1==1) {printf("-1"); return 0;}*/

	lim1=1;
	lim2=5*p;
	long mij, val;
	while(zero!=p)
	{
		
		if(catezero((lim1+lim2)/2)==1)
			sol=(lim2+lim1)/2;
		if(lim1==lim2 && catezero(lim1)==0) {printf("-1\n");return 0;}
	}
	while(sol%5!=0)
		sol--;
	if(sol==0) sol=1;
printf("%lld",sol);	
return 0;
}