Pagini recente » Cod sursa (job #99026) | Cod sursa (job #1850358) | Cod sursa (job #2505501) | Borderou de evaluare (job #1567335) | Cod sursa (job #1460361)
#include <stdio.h>
#include <math.h>
long long _pow(int a, int b)
{
long long rez = 1;
while (b)
{
rez *= a;
b--;
}
return rez;
}
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;
}