Cod sursa(job #2010585)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 13 august 2017 17:45:28
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("fact.in");
ofstream out("fact.out");

long long p;

void citire()
{
  in >> p;
}

long long nrZerouri(long long nr)
{
  long long nrZ = 0;
  while(nr != 0)
  {
    nrZ += nr / 5;
    nr /= 5;
  }
  return nrZ;
}

long long sol = -1;

void cautareBinara(long long & st, long long dr)
{
  if(st <= dr)
  {
    long long mij = st + (dr - st) / 2;
    long long var = nrZerouri(mij);
    if(var < p)
    {
      st = mij + 1;
    }
    else if(var > p)
    {
      dr = mij - 1;
    }
    else
    {
      sol = mij;
      dr = mij - 1;
    }
    cautareBinara(st, dr);
  }
}

void rezolvare()
{
  if(p < 0)
  {
    out << "-1";
  }
  else
  {
    long long st = 1, dr = LLONG_MAX;
    cautareBinara(st , dr);
    out << sol;
  }
}

int main()
{
  citire();
  rezolvare();
  return 0;
}