Cod sursa(job #247836)

Utilizator zlatebogdanZlate Bogdan zlatebogdan Data 24 ianuarie 2009 10:35:51
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
long long search(int);
int main ()
{
	int p,x;
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%d",&p);
	x=search(p);
	if (x==1&&p!=0)
		printf("-1");
	else
		printf("%lld\n",search(p));
	return 0;
}
bool ver(long long x,int p)
{
	long long i,nr=0;
	for (i=5;i<=x;i*=5)
	{
		nr+=x/i;
	}
	return nr>=p?1:0;
}
long long search(int p)
{
	long long rez=0,i;
	for (i=((long long)1)<<60;i;i>>=1)
	{
		rez+=i;
		if (ver(rez ,p))
			rez-=i;
	}
	return rez+1;
}