Cod sursa(job #472125)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 22 iulie 2010 23:38:57
Problema Factorial Scor 85
Compilator c Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>

int z_i_f(int N)
{
	int result = 0;
	while(N != 0)
	{
		result += N/5;
		N /= 5;
	}
	return result;
}

int main()
{
	FILE* f = fopen("fact.in", "r");
	int p;
	fscanf(f, "%d", &p);
	if(p == 0)
		return 1;
	int i = 0;
	int N = 0;
	int l = 0;
	int r = p * 10;
	while(l < r)
	{
		int m = l + (r-l)/2;
		int z = z_i_f(m);
		printf("[m %d z %d l %d r %d p %d]\n", m, z, l, r, p);
		if(z == p)
		{
			while(z_i_f(m) == p)
			{
				N = m;
				m--;
			}
			break;
		}
		else if(z > p)
		{
			r = m;
		}
		else
		{
			l = m + 1;
		}
	}
	fclose(f);
	f = fopen("fact.out", "w");
	fprintf(f, "%d", N);
	fclose(f);
	return 0;
}