Cod sursa(job #615191)

Utilizator DDeidaraSzasz Tamas Csaba DDeidara Data 8 octombrie 2011 21:09:51
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

int calc(unsigned long h);
int binary(unsigned long start, unsigned long end);
unsigned long p,no;

int main()
{
	ifstream f ("fact.in");
	ofstream g ("fact.out");
	
	f>>p;
	
	f.close ();
	
	no = binary(1,calc(p))*5;
	
	if (!no)
	   g<<"-1";
    else g<<no; 
	g.close ();
	
	return 0;
}

int calc(unsigned long h)
{
	unsigned long sum = h;
	while (h>4)
	{
		sum = sum + h/5;
		h = h/5;
	}
	
	return sum;
}

int binary(unsigned long start, unsigned long end)
{
    unsigned long k = (start + end)/2;
	unsigned long q = calc(k);
	if ( (start>end) )
		return 0;
	else
	{
	if (q == p)
		return k;
	else if (k > p) return binary(p,k-1);
	else if (k < p) return binary(k+1,p);
	else return 0;
	}
}