Cod sursa(job #1710819)

Utilizator M.AndreiMuntea Andrei Marius M.Andrei Data 29 mai 2016 20:32:57
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;
#define MAX 2000000000

ifstream f{ "fact.in" };
ofstream q{ "fact.out" };

int pow5(int a) {
	int nr = 0;
	int h = 5;

	while (h < a) {
		nr += a / h;
		h *= 5;
	}

	return nr;
}


int Fact(int p) {
	int a = 0, b = MAX, mid, t;
	while (true) {
		mid = (a + b) / 2;
		t = pow5(mid);
		if (t == p) break;
		else if (t > p) b = mid - 1;
		else a = mid + 1;
	}
	if (mid % 10 > 5) mid -= (mid % 10 - 5);
	else if (mid % 10 < 5) mid -= (mid % 10);
	return mid;
}

int main() {

	int p;
	f >> p;
	if (p == 0) q << "1";
	else q << Fact(p);

	f.close();
	q.close();
	return 0;
}