Cod sursa(job #220126)

Utilizator cristimateiToader Cristian-Matei cristimatei Data 9 noiembrie 2008 15:37:08
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>


int fact_zero(unsigned long int a) // calculeaza cate 0-uri are fact de a
{
	unsigned long int i = 5, z = 0;

	while(a/i != 0)
	{
		z = z + a/i;
		i = i * 5;
	}

	return z;

}//works

int div_5(unsigned long int a)
{
	unsigned long int i;
	for(i=a; i>0; 100000000i--)
		if(i%5 == 0)
		{
			printf("%lu",i);
			return 1;
		} 

	printf("error!");
	return 0;
} //works

int main()
{
	unsigned long int a = 1, b = 100000000, m, cfr_0, stefan;
	
	freopen ("fact.in","r",stdin);
	freopen ("fact.out","w",stdout);
	scanf("%lu", &cfr_0); //citesc cate cfr 0 vreau sa aiba fact    


//	printf("%lu",fact_zero(40010));
if(cfr_0 >= 0 && cfr_0<=100000000)
	if(cfr_0 == 0) printf("1");
	else
		while(a <= b)
		{
			m = a + (b-a)/2;  //mid = lo + (hi-lo)/2;
			stefan = fact_zero(m);
	
			if(stefan < cfr_0)
				a = m+1;
			else if(stefan > cfr_0)
			   	b = m-1;
			else //(stefan == cfr_0) 
			{
				div_5(m); 
				return 0;
			}
		}           

else printf("-1");
	return 0;
}