Pagini recente » Cod sursa (job #841471) | Cod sursa (job #2644648) | Cod sursa (job #2644872) | Cod sursa (job #3192316) | Cod sursa (job #793533)
Cod sursa(job #793533)
#include <stdio.h>
#include <limits.h>
long long f(long long x)
{
if (x < 5)
return 0;
long long i = 5, putere = 0;
while(i <= x)
{
putere += x / i;
i *= 5;
}
return putere;
}
long long bin_search(long long left, long long right, long long P)
{
if(right - left <= 1)
{
if (P < f(right))
return -1;//nu exista
return right;
}
long long middle = (left + right) / 2;
// prlong longf("%d %d %d\nf(%d) = %d\n", left, middle, right, middle, f(middle));
if ( f (middle) >= P)
return bin_search(left, middle, P);
else
return bin_search(middle, right, P);
}
int main()
{
FILE *f = fopen("fact.in", "r");
long long P;
fscanf(f, "%lld", &P);
fclose(f);
f = fopen("fact.out", "w");
fprintf(f, "%lld\n", bin_search(1,INT_MAX-1, P));
fclose(f);
return 0;
}