Pagini recente » Cod sursa (job #237680) | Cod sursa (job #1928466) | Cod sursa (job #963808) | Cod sursa (job #321851) | Cod sursa (job #2887047)
#include <stdio.h>
#include <stdlib.h>
#define ST 1
#define DR (1 << 29)
int nr_zero_fact(int n)
{
int nr = 0;
while (n >= 5)
{
nr += (n /= 5);
}
return nr;
}
int caut_binar(int p)
{
///caut binar cel mai mic n al carui factorial se termina cu CEL PUTIN p zerouri
int st = ST, dr = DR, rez = DR + 1;
while (st <= dr)
{
int m = (st + dr) / 2;
if (nr_zero_fact(m) >= p)
{
rez = m;
dr = m - 1;
}
else
{
st = m + 1;
}
}
return rez;
}
int main()
{
FILE *in, *out;
in = fopen("fact.in", "r");
out = fopen("fact.out", "w");
int p;
fscanf(in, "%d", &p);
fclose(in);
int n = caut_binar(p);
if (nr_zero_fact(n) != p)
{
n = -1;
}
fprintf(out, "%d\n", n);
fclose(out);
return 0;
}