Cod sursa(job #1710827)

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

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

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

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

	return nr;
}


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

long long main() {

	long long p;
	f >> p;
	if (p == 0) q << "1";
	else q << Fact(p)<<" "<<pow5(MAX);

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