#include <bits/stdc++.h>
using namespace std;
const int ML = 200100;
int op[ML];
double s[ML], S[ML], p[ML], f[2][ML];
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    s[i] = s[i - 1] + x;
    p[i] = p[i - 1] + (double)(1.0000000000 / x);
    S[i] = S[i - 1] + (double)(s[i] / x);
  }
  for (int kk = 1; kk <= k; kk++) {
    int no = kk & 1, la = !(kk & 1);
    op[0] = kk - 1;
    for (int i = kk, H = 0, T = 1; i <= n; i++) {
      if (kk - 1)
        for (;
             H + 1 < T && (p[i]) * ((s[op[H]]) - (s[op[H + 1]])) <
                              ((f[la][op[H]] - S[op[H]] + s[op[H]] * p[op[H]]) -
                               (f[la][op[H + 1]] - S[op[H + 1]] +
                                s[op[H + 1]] * p[op[H + 1]]));
             H++)
          ;
      int j = op[H];
      f[no][i] = f[la][j] + S[i] - S[j] - s[j] * (p[i] - p[j]);
      for (; H + 1 < T &&
             ((f[la][op[T - 2]] - S[op[T - 2]] + s[op[T - 2]] * p[op[T - 2]]) -
              (f[la][op[T - 1]] - S[op[T - 1]] + s[op[T - 1]] * p[op[T - 1]])) *
                     ((s[op[T - 1]]) - (s[i])) >
                 ((f[la][op[T - 1]] - S[op[T - 1]] +
                   s[op[T - 1]] * p[op[T - 1]]) -
                  (f[la][i] - S[i] + s[i] * p[i])) *
                     ((s[op[T - 2]]) - (s[op[T - 1]]));
           T--)
        ;
      op[T++] = i;
    }
  }
  printf("%.10f", f[k & 1][n]);
  return 0;
}
