Cod sursa(job #377991)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int v[20];
int j;
int fact (int n)
{
int k2 = 0, i, k;
for (j = 0; j < 20; j++)
if (v[j] > n)
{
k = j - 1;
break;
}
for (i = 0; i <= k; i++)
k2 = k2 + n / v[i];
return k2;
}
int main()
{
int N, P;
FILE *f, *g;
f = fopen ("fact.in", "r");
g = fopen ("fact.out", "w");
fscanf (f, "%d", &P);
if (P == 0)
{
fprintf(g, "1");
return 0;
}
for (j = 0; j < 20; j++)
v[j] = pow (5, j + 1);
N = P;
while (1)
{
if (fact(N) == P)
{
fprintf(g, "%d", N);
break;
}
if (fact(N) > P)
{
fprintf(g, "-1");
break;
}
N++;
}
fclose(f);
fclose(g);
return 0;
}