Cod sursa(job #1731420)

Utilizator alexandru.rusuRusu Alexandru alexandru.rusu Data 18 iulie 2016 22:08:17
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
// binary search + smarty function to find the final zeros of n!

#include <fstream>

std::ifstream f("fact.in");
std::ofstream g("fact.out");

int numarZerouri(int x) //ale lui x factorial
{
	int p = 5, nr = 0;
	while (x / p > 0)
	{
		nr += x / p;
		p = p * 5;
	}
	return nr;
}

int main()
{
	int n, p, rezultat;
	int maxim = 500000005;
	int mijloc;
	bool ok = false;
	n = 1;

	f >> p;
	
	while (n <= maxim)
	{
		mijloc = (n + maxim) / 2;
		if (numarZerouri(mijloc) < p)
		{
			n = mijloc + 1;
		}
		else if (numarZerouri(mijloc) >= p)
		{
			if (numarZerouri(mijloc) == p)
			{
				ok = true;
				rezultat = mijloc;
			}
			maxim = mijloc - 1;
		}
	}

	if (ok == true)
		g << rezultat;
	else
		g << -1;
}