Cod sursa(job #1188424)

Utilizator EpictetStamatin Cristian Epictet Data 19 mai 2014 17:52:40
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long p, V[50];

inline unsigned long long fact(int n)
{
	int s = 0, i = 1;
	while(V[i] <= n) s += n / V[i++];
	return s;
}

int main()
{
	fin >> p;
	if(p == 0) {  fout << "1\n"; fout.close(); return 0; }
	V[0] = 1;
	for(int i=1; i<=30; i++) V[i] = V[i-1] * 5;
	int st = 1, dr = p * 5, mij, w = 1;
	while(st <= dr && w)
	{
		mij = (st + dr) / 2;
		int zero = fact(mij);
		if(zero == p) w = 0;
		else if(zero < p) st = mij + 1;
		else if(zero > p) dr = mij - 1;
	}
	
	if(w) fout << "-1\n";
	else fout << mij - mij % 5 << '\n';
	fout.close();
	return 0;
}