Pagini recente » Cod sursa (job #1089140) | Cod sursa (job #852352) | Cod sursa (job #2792835) | Cod sursa (job #1662584) | Cod sursa (job #1460360)
#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 N1, 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)
{
//printf("p=%d k=%d delta=%d\n", p, k, delta);
p -= delta;
rez += k;
if (!p)
goto done;
c++;
}
n--;
}
if (p)
rez = -1;
}
done:
//printf("%lld",rez);
//getchar();
fprintf(out,"%lld",rez);
fclose(out);
return 0;
}