Cod sursa(job #1211160)

Utilizator ValyGabrielMitrea Valentin Gabriel ValyGabriel Data 22 iulie 2014 02:42:13
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;


int factNumarZerouri(double n)
{
	int nr = 0, x, pow = 5;

	for (;;)
	{
		x = (int)(n / pow);

		if (x == 0)
			break;

		nr += x;
		pow *= 5;
	}

	return nr;
}


int factCautareBinara(int p, int st, int dr)
{
	if (st > dr)
		return -1;

	int mij = ( st + dr ) / 2;
	int nrZerouri = factNumarZerouri(mij);

	if (nrZerouri == p)
	{
		while (mij % 5 != 0)
			mij --;

		return mij;
	}
	else if (nrZerouri > p)
		return factCautareBinara(p, st, mij - 1);
	else
		return factCautareBinara(p, mij + 1, dr);
}


int main(int argc, char** argv)
{
	int p;
    
    ifstream in("fact.in");
    ofstream out("fact.out");
    
    in >> p;

	if (p == 0)
		out << 1;
	else
		out << factCautareBinara(p, 1, p*5);

    in.close();
	out.close();
    
	return 0;
}