Cod sursa(job #2326079)

Utilizator OldpugAlex Ionescu Oldpug Data 23 ianuarie 2019 12:26:14
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda simulare_preoli Marime 0.64 kb
#ifdef INFOARENA
#include <fstream>
std::ifstream is{"fact.in"};
std::ofstream os{"fact.out"};
#else
#include <iostream>
#define is std::cin
#define os std::cout
#endif // INFOARENA

int zeroCount(int x) {
  int nr{}, imp{5};

  while (x >= imp) {
    nr += x / imp;
    imp *= 5;
  }

  return nr;
}

int main() {
  int p;
  is >> p;

  int left{1}, right{5 * p}, mid{}, nr{-1};

  while (left <= right) {
    mid = left + (right - left) / 2;
    auto zero{zeroCount(mid)};

    if (zero == p)
      nr = mid;
    if (zero >= p)
      right = mid - 1;
    else
      left = mid + 1;
  }

  os << (p ? nr : 1);
}