Cod sursa(job #586425)

Utilizator xaphariusMihai Suteu xapharius Data 1 mai 2011 01:12:37
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include "limits.h"

long long  getZero(long long x){
	long long sum = 0;
	for (long long i = 5; i <= x; i *= 5)
		sum += x/i;
	return sum;
}

int main(){
	freopen("fact.in", "r", stdin);
	freopen("fact.out", "w", stdout);
	
	long long P;
	scanf("%llu", &P);
	if (!P){
	       	printf("1");
		return 0;
	}
	
	long long a = 0, b = LLONG_MAX;
	long long c = (a + b) / 2;

	while (getZero(c) != P && a < b){
		if (P < getZero(c)) b = c - 1;
		else a = c + 1;
		c = (a + b)/ 2;
	//	printf("%llu %llu %llu\n", a, c, b);
	}

	if (getZero(c) == P) {
		//ca sa fie minimul
		c = c - c % 5;
		printf("%llu", c);
	}
	else printf("-1");
	
	//printf("\n%llu %llu", P, getZero(c));

	return 0;
}