Cod sursa(job #1382308)

Utilizator antirsi96Sergiu Marin antirsi96 Data 8 martie 2015 20:00:16
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

long zero(long n) {
	long res = 0;
	for(int i = 1; i <= 20; i++)
		res += n / (long) pow(5, i);
	return res;
}

int main() {
	freopen("fact.in", "r", stdin);
	freopen("fact.out", "w", stdout);
	long n; scanf("%ld", &n);
	
	if(n != 0) {
		long lo = 1;
		long hi = pow(2, 9) * pow(5, 9);
		long m = -1;
		while(lo <= hi) {
			m = (lo + hi) / 2;
			int z = zero(m);
			if(z == n) break;
			else if(z < n) lo = m + 1;
			else hi = m - 1;
		}
		if(zero(m) == n) {
			while(m % 5 != 0) m--;
			printf("%d", m);
		} else printf("-1");
	} else printf("1");

	return 0;
}