Cod sursa(job #457842)

Utilizator GulyanAlexandru Gulyan Data 21 mai 2010 18:50:36
Problema Factorial Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

const int max =  0x8FFFFFF;
int x;

inline int f(int n) {
  int rVal = 0;
  int i;
  int k = 5;
  while(k <= n) {
    for(i = k; i <= n; i += k)
      rVal ++;
    k *= 5;
  }
  return rVal;
}

int cauta(int a, int b) {
  if(a > b)
    return -1;
  int m = (a + b) / 2;
  int fm = f(m);
  //  fprintf(stderr, "f<%d,%d>(%d)=%d\n", a, b, m, fm);
  if(fm == x) {
    if(m == a)
      return m;
    return cauta(a, m);
  }
  else if(fm < x)
    return cauta(m + 1, b);
  else
    return cauta(a, m - 1);
}

int main() {

  freopen("fact.in", "r", stdin);
  freopen("fact.out", "w", stdout);
  
  int n;
  scanf("%d", &x);

  n = cauta(1, max);
  printf("%d\n", n);

  fclose(stdout);
  return 0;
}