Cod sursa(job #2609281)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 2 mai 2020 13:16:15
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda igorj_mentorat1 Marime 0.79 kb
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long p;
long long verif(long long a)
{
	long long s = 0;	
	long long q = 5;
	while (a / q)
	{
		s += (a/q);
		q *= 5;
	}
	return s;
}
long long c_binara(long long Max, long long Min)
{
	while (Min < Max)
	{
		long long Mij = (Max + Min) / 2;
		long long n = verif(Mij);
		if (n == p)
			return Mij;
		else
			if (n > p)
				Max = Mij - 1;
		else
			if (n < p)
				Min = Mij + 1;
	}
	if (Max < Min)
		return -1;
}
int main()
{
	f >> p;
	if (p == 0)
		g << 1;
	else
	{
		long long Max = 1000000000;
		long long Min = 0;
		long long w = c_binara(Max, Min);
		while (w % 5)
			w--;
		long long s = 0;
		long long q = 5;
		while (w / q)
		{
			s += (w / q);
			q *= 5;
		}
		if (s<p || s>p)
			g << -1;
		else
			g << w;
	}
}