Pagini recente » Cod sursa (job #2162761) | Cod sursa (job #1045317) | Cod sursa (job #2983216) | Cod sursa (job #669449) | Cod sursa (job #1460362)
#include <stdio.h>
#include <math.h>
long long _pow(long long a, long long b)
{
if (!b)
return 1;
return a*_pow(a, b-1);
}
int main()
{
long long N, rez = 0, k, delta;
int p, n, c;
FILE *in,*out;
in=fopen("fact.in","r");
out=fopen("fact.out","w");
fscanf(in,"%d",&p);
fclose(in);
if (p <= 1)
rez=_pow(5, p);
if (!rez)
{
n = floor(log(4*p+1)/log(5));
while (p && n)
{
k = _pow(5,n);
delta = (k-1)/4L;
c = 1;
while (c < 5 && p - delta >= 0)
{
p -= delta;
rez += k;
if (!p)
goto done;
c++;
}
n--;
}
if (p)
rez = -1;
}
done:
fprintf(out,"%lld",rez);
fclose(out);
return 0;
}