Pagini recente » Cod sursa (job #883500) | Cod sursa (job #637814) | Cod sursa (job #1799668) | Cod sursa (job #1763627) | Cod sursa (job #384952)
Cod sursa(job #384952)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long int nrzeros(long int n)
{
long int pow5[12] = {5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};
long int q = (long int)(log((long double)n)/1.6094);
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)
{
if (D2 == D)
N = -1;
break;
}
D2 = D1;
D1 = D;
D = Z - P;
N -= D*5;
Z = nrzeros(N);
}
fprintf(fout, "%ld", N);
fclose(fin);
fclose(fout);
return 0;
}