Pagini recente » Cod sursa (job #3344904) | Cod sursa (job #2353172) | Cod sursa (job #849903) | Cod sursa (job #2979644) | Cod sursa (job #3314833)
#include <stdio.h>
#include <stdlib.h>
FILE *in, *out;
long long v[100], v2[100];
int main()
{
in = fopen("fact.in", "r");
out = fopen("fact.out", "w");
int i = 1, p, n, dif, st, dr, mij, cp = -100;
long long nr = 1;
fscanf(in, "%d ",&p);
if(p == 0){
fprintf(out, "1");
}
else{
v2[1] = 5;
v[1] = 1;
while(nr <= p){
i++;
nr = (nr * 5) + 1;
v[i] = nr;
v2[i] = v2[i - 1] * 5;
}
i--;
nr = (nr - 1) / 5;
n = v2[i];
dif = p - nr;
while(dif > 0){
st = 1;
dr = i;
while(st <= dr){
mij = (st + dr) / 2;
if(v[mij] <= dif){
st = mij + 1;
nr = mij;
}
else{
dr = mij - 1;
}
}
dif = dif - v[nr];
n += v2[nr];
cp = dif;
i = nr;
}
if(dif != 0){
fprintf(out, "-1");
}
else{
fprintf(out, "%d ",n);
}
}
return 0;
}