Cod sursa(job #1427607)

Utilizator armageddon89_rAdrian D armageddon89_r Data 2 mai 2015 17:16:32
Problema Factorial Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>

using namespace std;

int zeroes(int n)
{
	if (n < 5)
		return 0;

	int k = 5;
	int nr = 0;
	while (k <= n)
	{
		nr += n / k;
		k *= 5;
	}

	return nr;
}

int bsearch(int n)
{
	int l = 5;
	int r = 1 << 25;
	while (r >= l)
	{
		int m = (l + r) / 2;
		int nr = zeroes(m);
		if (nr == n)
			return m;
		if (nr > n)
			r = m - 1;
		else
			l = m + 1;
	}

	return -1;
}

int main()
{
	freopen("fact.in", "r", stdin);
	freopen("fact.out", "w", stdout);

	int n;
	cin >> n;

	if (n == 0)
		cout << 1;

	int x = bsearch(n);

	if (x == -1) cout << x;

	while (x % 5 != 0)
		x--;

	cout << x;
}