Cod sursa(job #1010458)

Utilizator TwoOfDiamondsDaniel Alexandru Radu TwoOfDiamonds Data 14 octombrie 2013 22:21:51
Problema Factorial Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;

unsigned long long nr0(unsigned long long x)
{
	unsigned long long ret = 0;

	for (unsigned long long i = 5; i <= x ; i *= 5)
		ret += x/i;

	return ret;
}

int main()
{
	ifstream IN ("fact.in");
	ofstream OUT ("fact.out");

	int p; IN >> p;
	unsigned long long noo5 = 0;
	unsigned long long a = 0, b = p*5, c = (a+b) / 2;

	if (p == 0)
	{
		OUT << "1\n";
		return 0;
	}

	else
	{
		while (a <= b)
		{
			c = (a+b)/2;

			noo5 = nr0(c);

			if (noo5 >= p)
			{
				b = c - 1;
			}

			else
			{
				a = c + 1;
			}
		}

		if (noo5 == p)
		{
			OUT << c << "\n";
			return 0;
		}

		OUT << "-1\n";
	}


	return 0;
}