Cod sursa(job #502158)

Utilizator skullLepadat Mihai-Alexandru skull Data 17 noiembrie 2010 21:30:46
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
using namespace std;
#define inf 2000000000
#define pt(i) (1<<(i))

unsigned long p;
bool verif;

unsigned long ok ( unsigned long x)
{
	unsigned long i, nr5 = 0;
	for (i = 5; i <= x; i *= 5)
		nr5 += x / i;
	if (nr5 == p) verif = true; 
	if (nr5 <= p)
		return 1;
	return 0;
}

int main ()
{
	unsigned long k = 0; int i;
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%d", &p);
	verif = false;
	if (p == 0) { printf("1"); return 0; }
	for (i = 32; i >= 0; --i)
		if ( k+pt(i)<=inf && ok(k+pt(i)) )
			k += pt(i);
	if ( verif) printf("%d", k-4);
	else printf("-1");
	return 0;
}