Cod sursa(job #349934)

Utilizator blasterzMircea Dima blasterz Data 21 septembrie 2009 21:23:28
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
// @author Mircea Dima
// O(log2(P) * log5(n))

#include <cstdio>
#include <cstdlib>


inline unsigned int numOf5s(unsigned int n)
{
	unsigned int s = 0;
	while(n) s += n/5, n/=5;
	return s;
}

int main()
{
	unsigned int n;
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%d\n", &n);

	unsigned int i, cnt;
	for(i = (1<<31), cnt=(1<<31); cnt; cnt>>=1)
		if(i - cnt >= 0)
			if(numOf5s(i-cnt) >= n) i-= cnt;

	if(n == 0){ printf("1\n"); return 0;}
	if(numOf5s(i) != n) {printf("-1\n"); return 0;}
	printf("%u\n", i);
	


	//system("pause");
	return 0;
}