Cod sursa(job #785859)

Utilizator MtkMarianHagrSnaf MtkMarian Data 9 septembrie 2012 23:09:14
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<stdlib.h>
#include<cmath>
using namespace std;

#define ll long long
#define Inf 100000000
ll c,p1,cmin=Inf;
bool ok=false;
 inline ll min(ll a ,ll b )
{
return 	a<b?  a : b ;
}
ll desc( ll c)
{
	ll sum=0,sum2=0;
	


	for(ll t1=5;c/t1>=1;t1*=5)
	{
		sum+=abs((long double)c/t1);
	}
//	for(ll t1=2;c/t1>=1;t1*=2)
	//{
		//sum2+=abs(c/t1);
	//}
		return sum;
}
ll cautare(ll a, ll b,ll p)
{
	if(a>=b&& !ok)return -1;
	else 
		if(a>=b&&ok)return cmin;
	else 
	{

	c=(a+b)/2;
	//printf("%lld ",c);
	p1=desc(c);
	//printf("p1=%lld ,c=%d \n",p1,c);
	if(p1==p)
	{
		ok=true;
		if(cmin>c)cmin=c;
		cautare(a,c,p);
	}
		
	else if(p1<p)cautare(c+1,b,p);
	else if(p1>p) cautare(a,c-1,p);
	
	}
}
int main()
{
	freopen("factorial.in","r",stdin);
	freopen("factorial.out","w",stdout);
	ll p,rez;
	scanf("%lld",&p);
	rez=cautare(0,Inf,p);
	printf("%lld",rez);
	return 0;
}