Cod sursa(job #716447)

Utilizator rayvianPricope Razvan rayvian Data 18 martie 2012 20:09:28
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
using namespace std;
unsigned int p=0;


unsigned int nrzero(long long nr)
{
  long long zero=0,i;
  for(i=5; i<=nr; i*=5)
  {
    zero+=nr/i;
  }
  return zero;
}
unsigned long dublu=0;
/**
  Intoarce numarul cu numarul de zerouri cautat
*/
long search(unsigned long start,unsigned long end)
{


  unsigned long mid=(start+end)/2;
  unsigned long zero=nrzero(mid);

  if(dublu==mid)
    return -1;
  dublu=mid;


  if(zero==p)
    return mid;
  else if(p<zero)
    return search(start,mid);
  else
    return search(mid,end);

}

int main()
{
  ifstream fin("fact.in");
  ofstream out("fact.out");

  fin>>p;
  if(p==0)
  {
    out<<1;
    return 0;
  }
  long rez=search(0,1-0);
  if(rez==-1)
  {
    out<<(-1);
    return 0;
  }
  while(rez%5!=0)
    rez--;
  if(nrzero(rez)==p)
		out<<rez;
	else
		out<<(-1);

  return 0;
}