Cod sursa(job #326504)

Utilizator TabaraTabara Mihai Tabara Data 25 iunie 2009 14:07:54
Problema Factorial Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define in "fact.in"
#define out "fact.out"
#define NMAX (1<<30)
#define minim(a,b) ((a) < (b) ? (a) : (b))


long int N, P;
long int DC, DA, CC, CA, Z;

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

	scanf ( "%ld", &P );
	long int i, cpy;
	DA = CA = 0;
	
	for ( i = 1; i <= NMAX-5; ++i )
	{
		cpy = i;
		DC = DA, CC = CA;	
		
		while ( cpy%2 == 0 ) cpy >>= 1, DC++;
		while ( cpy%5 == 0 ) cpy /= 5, CC++;
		
		Z = minim ( CC, DC );
		if ( Z == P ) { printf ( "%ld\n", i ); break; }
		if ( Z > P ) { printf ("-1\n" ); break; }
		DA = DC, CA = CC;
	}
	
	return 0;
}