Cod sursa(job #711353)

Utilizator fhandreiAndrei Hareza fhandrei Data 11 martie 2012 23:02:29
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
//Include
#include <fstream>
using namespace std;

//Functii
void bs(int left, int right);
long long int f(int x);

//Variabile
ifstream in("fact.in");
ofstream out("fact.out");

long long int p;
long long int n;

//Main
int main()
{
	in >> p;
	bs(1, (int)1e6);
	
	if(!n)
		out << -1;
	else
	{
		/*long long int ultimaCifra = n % 10;
		n/=10;
		n*=10;
		if(ultimaCifra >= 5)
			n+=5;*/
		out << n;
	}
	
	in.close();
	out.close();
	return 0;
}

void bs(int left, int right)
{
	long long int mijl = (left + right) / 2;
	if(mijl==41)
		++mijl, --mijl;
	long long int nr0 = f(mijl);
	if(nr0 == p)
		n = mijl;
	else if(left != right)
	{
		if(nr0 > p)
			bs(left, mijl-1);
		else
			bs(mijl+1, right);
	}
}

long long int f(int x)
{
	long long int rasp = 0;
	for(int i=5 ; i<=x ; i+=5)
	{
		int nr=i;
		while(!(nr%5))
			nr/=5, ++rasp;
	}
	
	return rasp;
}