Cod sursa(job #1010379)

Utilizator TwoOfDiamondsDaniel Alexandru Radu TwoOfDiamonds Data 14 octombrie 2013 19:54:07
Problema Factorial Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;

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

	if (x % 5)
	{
		x = x - (x % 5);
	}

	unsigned long long i = 0;
	unsigned long long j;

	while (i < x)
	{
		vaz = 1;

		for (j = 5; j * 5 < x - i; j *= 5)
		{
			vaz = vaz * 5 + 1;
		}

		i += j;
		ret += vaz;
	}

	
	/*
	while (x > 1)
	{
		x /= 5;
		ret++;
	}*/

	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 = 10000000000, c = (a+b) / 2;

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

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

			noo5 = nr0(c);

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

			else
			{
				a = c + 1;
			}
		}
	}

	if (noo5 > p)
	{
		OUT << "-1\n";
		return 0;
	}

	OUT <<  c + 1 << "\n";

	return 0;
}