Cod sursa(job #1076073)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 9 ianuarie 2014 21:05:57
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

ifstream f ("fact.in");
ofstream g("fact.out");

int n,p,i;
int MAX = 100000000;

int caut_binar(int MAX, int p)
{
	int k = 0, i, st = 1, dr = MAX;
	int m = (dr+st)/2;
	if (p == 0) return 1;
	while (k != p && st != m)
	{
		k = 0;
		i = 5;
		while (i < m)
		{
			k += m/i;
			i *= 5;
		}
		if (k > p)
		{
			dr = m - 1; 
			m = (st+m)/2;
		}
		if (k < p) 
		{
			st = m + 1;
			m = (st+m)/2;
		}
		if (st >= dr) return -1;
	}
	st = m;
	while (k == p)
	{
		if (k != p) return st;
		k = 0;
		i = 5;
		while (i <= st)
		{
			k += st/i;
			i *= 5;
		}
		if (k == p) m = st;
		st --;
	}
	return m;
}

int main ()
{
	f >> p;
	n = caut_binar(MAX,p);
	g << n;
	f.close();
	g.close();
	return 0;
}