Pagini recente » Cod sursa (job #735004) | Rating Tirla Ovi (oyidiu) | Cod sursa (job #2356340) | Cod sursa (job #672337) | Cod sursa (job #734318)
Cod sursa(job #734318)
#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;
}