Cod sursa(job #211807)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 3 octombrie 2008 17:52:23
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>   
      
unsigned long long cauta(unsigned long long li, unsigned long long ls, unsigned long long x);
unsigned long long zero(unsigned long long x);
     
int main()  
{  
  unsigned long long p, li=0, ls=1000000000000000000LL;  
  freopen("fact.in", "r", stdin);  
  freopen("fact.out", "w", stdout);  
  scanf("%lld", &p);
  printf("%lld", cauta(li, ls, p));  
  return 0;  
}//main

unsigned long long cauta(unsigned long long li, unsigned long long ls, unsigned long long x)  
{  
	unsigned long long m;
	while (li<ls)
	{ 
	  	m=(li+ls)/2;
 		if (x>zero(m))  
  			li=m+1;  
 		else  
  			ls=m;  
	}//while  
	m=(li+ls)/2;
   if (x>zero(m))
		m++;
	if ((zero(m)==x)&&(m>0))
	  return m;  
	else
	  return -1;
}//cauta

unsigned long long zero(unsigned long long x)
{
	unsigned long long z=0, p=5;
   while (p<=x)
	{
		z+=x/p;
		p*=5;
	}//while
	return z;
}//zero