Pagini recente » Cod sursa (job #601964) | Cod sursa (job #1277614) | Cod sursa (job #1500848) | Istoria paginii runda/winners10 | Cod sursa (job #384944)
Cod sursa(job #384944)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long int pow5[12] = {5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};
long int nrzeros(long int n)
{
long int q = (long int)(log((long double)n)/log(5));
long int nr = 0;
for (int i = 0; i < q; i++)
{
nr += (long int)(n/pow5[i]);
}
return nr;
}
int main()
{
FILE* fin = fopen("factorial.in", "r");
FILE* fout = fopen("factorial.out", "w");
long int P = 0;
fscanf(fin, "%ld", &P);
long int N = 5 * P;
long int Z = nrzeros(N);
long int D = 0;
long int D1 = 0, D2 = 1;
int done = 0;
while (!done)
{
if (P == Z || D2 == D)
{
done = 1;
N = -1;
break;
}
D2 = D1;
D1 = D;
D = Z - P;
N -= D*5;
Z = nrzeros(N);
}
fprintf(fout, "%ld", (long int)N);
fclose(fin);
fclose(fout);
return 1;
}