Cod sursa(job #711344)

Utilizator fhandreiAndrei Hareza fhandrei Data 11 martie 2012 22:52:08
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
//Include
#include <fstream>
using namespace std;

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

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

int p;
int n;

//Main
int main()
{
	in >> p;
	bs(1, (int)1e7);
	
	if(!n)
		out << -1;
	else
	{
		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)
{
	int mijl = (left + right) / 2;
	
	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);
	}
}

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