Cod sursa(job #1268681)

Utilizator fhandreiAndrei Hareza fhandrei Data 21 noiembrie 2014 12:02:29
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
// FMI - Grupa 135 - Semigrupa 2 - Hareza Andrei
// Include
#include <fstream>
using namespace std;

// Functii
int binarySearch(int left, int right);
bool good(int num);

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

int num, digits;

// Main
int main()
{
	in >> digits;
	if(!digits)
	{
		out << 1;
		in.close();
		out.close();
		return 0;
	}
	num = binarySearch(1, (int)1e9);
	num -= num%5;
	
	out << num << '\n';
	
	in.close();
	out.close();
	return 0;
}

int binarySearch(int left, int right)
{
	if(left == right)
		return left;
	
	int mid = (left + right) / 2;
	
	if(good(mid))
		return binarySearch(left, mid);
	else
		return binarySearch(mid+1, right);
}

bool good(int num)
{
	int power = 0, div = 5;
	
    while(num/div)
    {
        power += num/div;
        div *= 5;
    }
    return power>=digits;
}