Pagini recente » Cod sursa (job #315869) | Cod sursa (job #1951377) | Cod sursa (job #2158117) | Cod sursa (job #218524) | Cod sursa (job #384955)
Cod sursa(job #384955)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long nrzeros(long long);
int main()
{
FILE* fin = fopen("factorial.in", "r");
FILE* fout = fopen("factorial.out", "w");
long long P = 0;
fscanf(fin, "%ld", &P);
long long N = 5 * P;
long long Z = nrzeros(N);
long long D = 0;
long long D1 = 0;
long long 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;
}
long long nrzeros(long long n)
{
long long pow5[12] = {5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};
long long q = (long int)(log((long double)n)/1.6094);
long long nr = 0;
for (int i = 0; i < q; i++)
{
nr += (long long)(n/pow5[i]);
}
return nr;
}