Cod sursa(job #2137019)

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

typedef long long ll;
using namespace std;

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

ll n;

ll nrZero ( ll x )
{
	ll s = 0, p;

	for ( p = 5; p <= x; p *= 5 )
        s += x / p;

	return s;
}

ll binSearch ( ll n )
{
	ll 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;
	}
}