Cod sursa(job #474508)
#include <stdio.h>
using namespace std;
#define LIM 2000000000
int p, i, aux;
int st, dr, mijl;
int rez, nr = -1;
int descompunere (long long x)
{
int suma = 0, put = 5;
while (x / put > 0)
{
suma += (x / put);
put *= 5;
}
return suma;
}
int main ()
{
FILE *f = fopen ("fact.in","r");
FILE *g = fopen ("fact.out","w");
fscanf (f,"%d", &p);
st = 1;
dr = LIM;
while (st <= dr)
{
mijl = (st + dr) / 2;
rez = descompunere (mijl);
if (rez == p)
{
nr = mijl;
dr = mijl - 1;
}
else if (rez < p)
st = mijl + 1;
else
dr = mijl - 1;
}
fprintf (g, "%d", nr);
fclose (g);
fclose (f);
return 0;
}