Cod sursa(job #457848)

Utilizator GulyanAlexandru Gulyan Data 21 mai 2010 19:01:38
Problema Factorial Scor 25
Compilator c Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

const long long max =  0xFFFFFFULL;
long long x;

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

long long cauta(long long a, long long b) {
  if(a > b)
    return -1;
  long long m = (a + b) / 2;
  long long 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);
  
  long long n;
  scanf("%lld", &x);

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

  fclose(stdout);
  return 0;
}