Cod sursa(job #1430112)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 7 mai 2015 21:44:16
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

int n0;
inline int countFive(int x) {
  int div = 5;
  int ans = 0;

  while (x >= div && ans <= n0) {
    ans = ans + (x / div);
    div = div + (div << 2);
  }
  return ans;
}
int main(void) {
  FILE *f = fopen("fact.in", "r");
  int lo, hi;
  int last;

  fscanf(f, "%d", &n0);
  fclose(f);
  if (n0) {
    lo = 0;
    hi = n0 + (n0 << 2) + 1;
    last = -1;
    while (hi - lo > 1) {
      int mid = lo + ((hi - lo) >> 1);
      int cnt = countFive(mid);
      if (cnt < n0) {
        lo = mid;
      } else {
        if (cnt == n0) {
          last = mid;
        }
        hi = mid;
      }
    }
    f = fopen("fact.out", "w");
    fprintf(f, "%d\n", last);
  } else {
    f = fopen("fact.out", "w");
    fputs("1\n", f);
  }
  fclose(f);
  return 0;
}