#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5, K = 55;
int n, k;
int a[N];
long long pref1[N];
double pref2[N];
double pref3[N];
double dp[K][N];
double cost(int l, int r) {
  return pref3[r] - pref3[l - 1] - (pref2[r] - pref2[l - 1]) * pref1[l - 1];
}
void solve(int idx, int l, int r, int optL, int optR) {
  if (l > r) return;
  int mid = (l + r) / 2;
  double &ret = dp[idx][mid] = 2e18;
  int opt = -1;
  for (int i = max(optL, idx - 1); i <= min(optR, mid - 1); i++) {
    double cur = dp[idx - 1][i] + cost(i + 1, mid);
    if (cur < ret) ret = cur, opt = i;
  }
  solve(idx, l, mid - 1, optL, opt);
  solve(idx, mid + 1, r, opt, optR);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = (1); i <= (int)(n); i += (1)) cin >> a[i];
  for (int i = (1); i <= (int)(n); i += (1)) {
    pref1[i] = pref1[i - 1] + a[i];
    pref2[i] = pref2[i - 1] + 1.0 / (double)a[i];
    pref3[i] = pref3[i - 1] + pref1[i] / (double)a[i];
  }
  for (int i = (1); i <= (int)(n); i += (1)) dp[1][i] = cost(1, i);
  for (int i = (2); i <= (int)(k); i += (1)) solve(i, i, n, i - 1, n);
  cout << fixed << setprecision(10) << dp[k][n] << '\n';
  return 0;
}
