Cod sursa(job #2137015)

Utilizator AndreiBadescuBadescu Andrei-Octavian AndreiBadescu Data 20 februarie 2018 15:26:44
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

using namespace std;

ifstream fin ("fact.in");
ofstream fout ("fact.out");

int n;

int nrZero ( int x )
{
	int s = 0, p = 5;

	while ( p <= x )
	{
		s += x / p;
		p *= 5;
	}

	return s;
}

int binSearch ( int n )
{
	int t, pp = -1, mij, st = 1, dr = 100000000;

	while ( st <= dr )
	{
		mij = (st + dr) / 2;
		t = nrZero(mij);

		if ( t >= n )
			dr = mij - 1, pp = mij;
		else
			st = mij + 1;
	}

	return pp;
}

int main()
{
	fin >> n;

	if ( n == 0 )
		fout << 1;
	else
	{
		int t = binSearch (n);

		if ( nrZero(t) == n )
			fout << t;
		else
			fout << -1;
	}
}