#include <bits/stdc++.h>
struct State {
  int n;
  double p_p;
  double p_b;
  double t;
  double r;
  State(int n) : n(n), p_p(0.0), p_b(0.0), t(0.0), r(0.0) {}
  inline void ride_to(int k, double v_p, double v_b, double l, double d) {
    n -= std::min(n, k);
    double dt = d / v_b;
    p_p += dt * v_p;
    p_b += dt * v_b;
    t += dt;
    double ld = std::max(0.0, l - p_b);
    r = std::max(r, t + ld / v_p);
  }
  inline void ride_back(double v_p, double v_b) {
    double dt = (p_b - p_p) / (v_p + v_b);
    p_p = p_b = p_p + dt * v_p;
    t += dt;
  }
};
inline double simulate(int n, int l, double v_p, double v_b, int k, double d) {
  State state(n);
  for (;;) {
    state.ride_to(k, v_p, v_b, l, d);
    if (state.n == 0) {
      break;
    }
    state.ride_back(v_p, v_b);
  }
  return state.r;
}
int main() {
  int n, l, v_p, v_b, k;
  std::cin >> n >> l >> v_p >> v_b >> k;
  double phi = (1.0 + std::sqrt(5.0)) / 2.0;
  double d_a = 0.0;
  double r_a = simulate(n, l, v_p, v_b, k, d_a);
  double d_b = l;
  double r_b = simulate(n, l, v_p, v_b, k, d_b);
  double d_a1 = d_a + (1.0 - 1.0 / phi) * (d_b - d_a);
  double r_a1 = simulate(n, l, v_p, v_b, k, d_a1);
  double d_b1 = d_b - (1.0 - 1.0 / phi) * (d_b - d_a);
  double r_b1 = simulate(n, l, v_p, v_b, k, d_b1);
  while (std::max(std::abs(r_a - r_a1), std::abs(r_b - r_b1)) > 1e-08) {
    if (r_a1 < r_b1) {
      d_b = d_b1;
      r_b = r_b1;
      d_b1 = d_a1;
      r_b1 = r_a1;
      d_a1 = d_a + (1.0 - 1.0 / phi) * (d_b - d_a);
      r_a1 = simulate(n, l, v_p, v_b, k, d_a1);
    } else {
      d_a = d_a1;
      r_a = r_a1;
      d_a1 = d_b1;
      r_a1 = r_b1;
      d_b1 = d_b - (1.0 - 1.0 / phi) * (d_b - d_a);
      r_b1 = simulate(n, l, v_p, v_b, k, d_b1);
    }
  }
  std::cout << std::setprecision(8) << r_a1 << "\n";
  return 0;
}
