Pagini recente » Cod sursa (job #860574) | Cod sursa (job #2886480) | Cod sursa (job #2871154) | Cod sursa (job #2873909) | Cod sursa (job #779490)
Cod sursa(job #779490)
#include <stdlib.h>
#include <stdio.h>
#include <values.h>
int f(int num)
{
int sum = 0;
while (num) {
sum += num/5;
num /= 5;
}
return sum;
}
int bin_search(int key, int left, int right)
{
int mid = (right + left)/2;
if (right < left)
return 0;
if (f(mid) < key)
return bin_search(key, mid + 1, right);
else if (f(mid) > key)
return bin_search(key, left, mid - 1);
else
return mid;
}
int main (void)
{
FILE *f;
int result, p;
f = fopen("fact.in", "rt");
fscanf(f, "%d", &p);
result = bin_search(p, 0, MAXINT);
result = result - result % 5;
if (result == 0)
result = -1;
if (p == 0)
result = 1;
fclose(f);
f = fopen("fact.out", "wt");
fprintf(f, "%d", result);
fclose(f);
return 0;
}