Cod sursa(job #734318)

Utilizator yamahaFMI Maria Stoica yamaha Data 13 aprilie 2012 22:55:38
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <math.h>

double m;

double suma(double j, double k)
{
	double s = 0;
	for (int i=1; i<=k; i++)
		s += floor( j/pow(5,i) );
	return s;
}

double fact(long p)
{
    double i;
    double a, b, j;
    if (p == 0) return 1;
	else
	{
		m = 1;
		for(i=1; m<=p; i++) m += pow(5,i);
		if(p == m-1) return -1; 
        else m -= pow(5,--i);
		
        a = ceil( p*pow(5,i)/m );
		b = floor( (p+i)*pow(5,i)/m );
		for(j=a; j<b; j++)
			if (suma(j,i) == p) return j;
	}
	return -1;
}

int main()
{
	freopen ("fact.in", "r", stdin);
	freopen ("fact.out", "w", stdout);
    
    long p;
	
	scanf("%d", &p);
	printf("%d", fact(p));

	return 0;
}