#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:36777216")
using namespace std;
const double PI = acos(-1.0);
const long long INF = 1000 * 1000 * 1000 + 7;
const long long LINF = INF * (long long)INF;
const int MOD = 1000 * 1000 * 1000 + 7;
const int MAX = 200 * 1000 + 47;
const int MIN = 57;
double T[MAX];
double S[MAX];
double P[MAX];
double Q[MAX];
double dp[MIN][MAX];
int n, k;
void precalc() {
  for (int i = (0); i < (n); i++) {
    S[i] = T[i];
    if (i) S[i] += S[i - 1];
    Q[i] = 1.0 / T[i];
    if (i) Q[i] += Q[i - 1];
    P[i] = S[i] / T[i];
    if (i) P[i] += P[i - 1];
  }
}
double pp(int l, int r) {
  double ans = P[r];
  if (l) ans -= P[l - 1];
  if (l) {
    double tmp = (Q[r] - Q[l - 1]) * S[l - 1];
    ans -= tmp;
  }
  return ans;
}
void f(int l, int r, int L, int R, int k) {
  if (l > r) return;
  int m = (l + r) / 2;
  double res = 1e100;
  int pos;
  for (int i = (L); i < (min(R, m) + 1); i++) {
    double val = 0;
    if (i) val = dp[k - 1][i - 1];
    val += pp(i, m);
    if (val <= res) {
      res = val;
      pos = i;
    }
  }
  dp[k][m] = res;
  f(l, m - 1, L, pos, k);
  f(m + 1, r, pos, R, k);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k;
  for (int i = (0); i < (n); i++) cin >> T[i];
  precalc();
  for (int i = (0); i < (n); i++) dp[0][i] = 1e100;
  for (int j = (1); j < (k + 1); j++) {
    f(0, n - 1, 0, n - 1, j);
  }
  cout << fixed << setprecision(10) << dp[k][n - 1] << endl;
}
