Cod sursa(job #571365)

Utilizator Catah15Catalin Haidau Catah15 Data 4 aprilie 2011 13:00:38
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;


#define LL long long
#define inf 4000000015LL


LL P, sol = inf;


LL count (LL q)
{
	LL rsp = 0;
	
	for ( ; q != 0; )
	{
		q /= 5;
		
		rsp += q;
	}
	
	return rsp;
}


void bin_Search ()
{
	LL st = 1, dr = inf, mid;
	
	while (st < dr)
	{
		mid = (st + dr) / 2;
		
		LL rsp = count(mid);
		
		if ( rsp == P )
		{
			sol = min (sol, mid);
			dr = mid - 1;
		}
		else
			if (rsp < P) st = mid + 1;
			else dr = mid - 1;
	}
	
}


int main()
{
	ifstream f("fact.in");
	ofstream g("fact.out");
	
	f >> P;
	
	bin_Search ();
	
	if (P == 0)
	{
		g << 1;
		return 0;
	}
	
	if (sol == inf)
		g << -1;
	else
	{
		while (sol % 5)
			-- sol;
		
		g << sol;
	}
	
	f.close();
	g.close();
	
	return 0;
}