Cod sursa(job #3309705)

Utilizator initrdIarto Paul initrd Data 7 septembrie 2025 22:22:20
Problema Factorial Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
long int fact(unsigned long long int p) {
  if (p == 0) return 1;
  else {
    long int sum = 0;
    for (unsigned long long int i = 5; i <= p; i *= 5)
      sum += std::floor(p / i);
    return sum;
  }
}

long long int cb (long int p, unsigned long long int a, unsigned long long int b) {
  long long r = -1;

  while (a <= b) {
    unsigned long long c = (a + b) / 2, f = fact(c);

    if (f == p) r = c, b  = c - 1;
    else if (f < p) a = c + 1;
    else b = c - 1;
  }

  return r;
}

int main() {

  std::ios::sync_with_stdio(false);

  long int p;
  std::ifstream in(fact.in);
  std::ofstream out(fact.out);

  in.tie(nullptr);
  out.tie(nullptr);

  in >> p;

  long long int ans = cb(p, 1, 5 * p + 5);

  out << ans;

  in.close();
  out.close();
  return 0;
}