Cod sursa(job #439393)

Utilizator crushackPopescu Silviu crushack Data 11 aprilie 2010 15:54:06
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

int nr5(long long);

int main()
{
	long long ls,ld,m,ax;
	int p;
	long long n;
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%lld",&p);
	ls=1;ld=2000000000;
	while (ls<=ld)
	{
		m= (ls+ld)/2;
		ax= nr5 (m);
		if (ax==p)
			ls=ld+1;
		else if (ax>p)
			ld=m-1;
		else
			ls=m+1;
	}
	if (ax==p) n=m;
	else n=-1;
	while (n%5 && n!=-1) n--;
	printf("%lld\n",n);
	return 0;
}

int nr5(long long a)
{
	int x=5;
	int c=0;
	while (x<=a)
	{
		c+= a/x;
		x*=5;
	}
	return c;
}