Cod sursa(job #2188338)

Utilizator OldpugAlex Ionescu Oldpug Data 27 martie 2018 09:06:29
Problema Factorial Scor 100
Compilator cpp Status done
Runda bpc9 Marime 0.56 kb
#include <fstream>
#include <cstdint>
 
int32_t zeroCount(int32_t x) {
  int32_t nr{}, imp{5};

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

  return nr;
}
 
int main() {
  int32_t p{};
  std::ifstream{"fact.in"} >> p;

  int32_t 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;
  }

  std::ofstream{"fact.out"} << (p ? nr : 1);
}