#include <bits/stdc++.h>
using namespace std;
void fre() {
  freopen("c://test//input.in", "r", stdin);
  freopen("c://test//output.out", "w", stdout);
}
template <class T1, class T2>
inline void gmax(T1 &a, T2 b) {
  if (b > a) a = b;
}
template <class T1, class T2>
inline void gmin(T1 &a, T2 b) {
  if (b < a) a = b;
}
const int N = 0, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int n, k;
double dis, v1, v2;
bool check(double limit) {
  int top = n / k + (n % k > 0);
  double nowt = 0;
  double nowd = 0;
  for (int i = 1; i <= top; ++i) {
    double dd = dis - nowd;
    double tt = limit - nowt;
    double go = tt * v1;
    if (go >= dd) return 1;
    double more = dd - go;
    double dri = more / (v2 - v1);
    nowt += dri;
    nowd += dri * v1;
    if (i < top) {
      double d = dri * (v2 - v1);
      double t = d / (v2 + v1);
      nowt += t;
      nowd += t * v1;
    }
    if (nowt > limit) return 0;
  }
  return 1;
}
void O1() {
  double x = n / k + (n % k > 0);
  double y = (x - 1) * (v2 - v1) / (v1 + v2);
  double t2 = dis / v2 / (x - y);
  double t1 = (dis - t2 * v2) / v1;
  printf("%.10f\n", t1 + t2);
}
int main() {
  while (~scanf("%d%lf%lf%lf%d", &n, &dis, &v1, &v2, &k)) {
    O1();
    continue;
    double l = dis / v2;
    double r = dis / v1;
    for (int tim = 1; tim <= 200; ++tim) {
      double mid = (l + r) / 2;
      check(mid) ? r = mid : l = mid;
    }
    printf("%.10f\n", l);
  }
  return 0;
}
