Cod sursa(job #160351)

Utilizator sraduvictorSarmasag Radu Victor sraduvictor Data 15 martie 2008 03:32:20
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#include <cstdlib>

int globalVal = 0;

int getNear( int p )
{
	if ( p == 0 )
		return 1;
		
	int nr = 1;
	int val = 5;
	
	while ( p > (nr * 5 + 1) )
	{
		nr = nr * 5 + 1;
		val = val * 5;
	}
	
	if ( p <= nr * 4 )
	{
		int scale = p / nr;
		globalVal += (val*scale);
		return p-(scale*nr);
	}
	return -1;
}

int main ( int argc, char *argv[] )
{
	FILE *fin = fopen( "factorial.in", "r" );
	int p;
	fscanf( fin, "%d", &p );
	fclose( fin );
	
	if ( p == 0 )
		globalVal = 1;
	
	while ( p > 0 )
		p = getNear( p );
	
	if ( p == -1 )
		globalVal = -1;
	
	FILE *fout = fopen( "factorial.out", "w" );
	fprintf( fout, "%d\n", globalVal );
	fclose( fout );
	return 0;
}