Cod sursa(job #326553)

Utilizator TabaraTabara Mihai Tabara Data 25 iunie 2009 15:45:08
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb

// http://mathworld.wolfram.com/Factorial.html -- numarul de zerouri pentru n!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define in "fact.in"
#define out "fact.out"
#define NMAX (1<<30)

long int nr( long int x )
{
	int nrsol = 0, k;
	for ( k = 5; k <= x; )
	{
		nrsol += (x/k);
		k *= 5;
	}
	return nrsol;
}

long int bl, bm, br;
long int S, P, last;

int main ( void )
{
	freopen ( in, "r", stdin );
	freopen ( out, "w", stdout );

	scanf ( "%ld", &P );
	
	last = -1;
	for ( bl = 1, br = NMAX; bl <= br; )
	{
		bm = bl + ((br-bl)>>1);
		S = nr(bm);
		if ( S == P ) { last = bm; br = bm-1; }
		else if ( S < P ) bl = bm+1;
		else br = bm-1;
	}
	printf ( "%ld\n", last == -1 ? -1 : last );
	
	return 0;
}