Cod sursa(job #1010529)

Utilizator iulia_infoIulia Cosmin iulia_info Data 15 octombrie 2013 02:02:09
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>
using namespace std;
 
int get_fives(int x) {
  int count = 0;
  for (int i = 5; i <= x; i *= 5) {
    count += x/i;
  }
  return count;
}

int prev_multiple(int x) {
  while (x % 5 != 0) { x--; }
  return x;
}

int get_result(int p) {
  int left = 1;
  int right = p * 5;
  while (left <= right) {
    int mid = (left + right) / 2;
    int mid_fives = get_fives(mid);
    if (mid_fives == p) {
      return prev_multiple(mid);
   } else {
      if (mid_fives < p) { left = mid + 1; }
      else { right = mid - 1; }
    }
  }
  return -1;
}
 
int main()
{
  ifstream input("fact.in");
  int p;
  input >> p;

  int result;
  if (p == 0) { result = 1; }
  else { result = get_result(p); }

  ofstream output("fact.out");
  output << result;
}