Cod sursa(job #579801)

Utilizator BlackElfSpulber Iosif BlackElf Data 12 aprilie 2011 14:45:02
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>

using namespace std;

long long noOfFives (long long n)
{
	long long c = 0;
	long long pw = 5;

	while (n / pw)
	{
		c += n / pw;
		pw *= 5;
	}

	return c;
}

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

	long long p;
	long long n = 5;
	long long nfv;
	long long left, right;

	in >> p;

	if (p == 0)
	{
		out << 1 << endl;
		return 0;
	}

	if (p < 0)
	{
		out << -1 << endl;
		return 0;
	}
	

	left = 0;
	right = LONG_MAX;

	while (1)
	{
		n = (left + right) / 2;
		nfv = noOfFives(n);

		if (nfv < p)
			left = n;
		else
			if (nfv > p)
				right = n;
			else
			{
				n = n - n % 5;
				out << n << endl;
				return 0;
			}
	}

	return 0;
}