Cod sursa(job #779490)

Utilizator f.v.antonFlavius Anton f.v.anton Data 17 august 2012 20:14:15
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.72 kb
#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;
}