Cod sursa(job #1108513)

Utilizator danny794Dan Danaila danny794 Data 15 februarie 2014 19:27:11
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>

typedef long long ll;
using namespace std;

ll compute(ll x) {
  ll s = 0;
  while(x) {
    x /= 5;
    s += x;
  }
  return s;
}

ll solve(int x) {
  ll m, left = 1, right = 1 << 28, partial_result;
  while( left <= right ) {
    m = (left + right) >> 1;
    partial_result = compute(m);
    if( partial_result > x ) {
      right = m - 1;
    } else if ( partial_result < x ) {
      left = m + 1;
    } else if (partial_result == x)
      return (m / 5) * 5;
  }
  return -1;
}

void read() {
  freopen("fact.in", "r", stdin);
  freopen("fact.out", "w", stdout);
  int x;
  scanf("%i", &x);
  ll r = solve(x);
  printf("%lld\n", r ? r : 1);
}

int main() {
  read();
  return 0;
}