Cod sursa(job #457841)

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

const int max =  0x8FFFFFF;

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, int x) {
  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, x);
  }
  else if(fm < x)
    return cauta(m + 1, b, x);
  else
    return cauta(a, m - 1, x);
}

int main() {

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

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

  fclose(stdout);
  return 0;
}