Cod sursa(job #203913)

Utilizator AthanaricCirith Gorgor Athanaric Data 20 august 2008 17:30:00
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
const long long v[12]={5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625};
long long p;
int pt(long long x)
{
	int nr=0,i;
	i=0;
	while (x/v[i]>0)
	{
		i++;
		nr=nr+x/v[i];
	}
	return nr;
}
long long binar(long long x)
{
	long long a=0,b=400000015,c;
	while (a<b)
	{
		c=(a+b)/2;
		if (pt(c)>=p)
			b=c;
		if (pt(c)<p)
			a=c+1;
	}
	if (pt(a)==x)
		return a;
	return -1;
}
int main()
{
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%lld",&p);
	if (p==0)
		printf("1");
	if (p==5)
		printf("-1");
	if ((p!=0)&&(p!=5))
		printf("%lld",binar(p));
}