Cod sursa(job #716386)

Utilizator rayvianPricope Razvan rayvian Data 18 martie 2012 18:53:03
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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,80000000);
  if(rez==-1)
  {
    out<<-1;
    return 0;
  }
  while(rez%5!=0)
    rez--;
  out<<rez;

  return 0;
}