Cod sursa(job #711377)

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

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

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

long long int p;
long long int n;

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

void bs(long long int left, long long right)
{
	long long int mijl = (left + right) / 2;
	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(long long int n)
{
	long long int x=0,p=5;
	while(n/p!=0)
	{
		x+=n/p;
		p*=5;
	}
	return x;
}