#include <bits/stdc++.h>
using namespace std;
void time() {}
void print_arr(int n, bool arr[]) {
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << "\n";
}
void print_arr(int n, int arr[]) {
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << "\n";
}
void print_vec(vector<int> &vec) {
  for (auto e : vec) {
    cout << e << " ";
  }
  cout << "\n";
}
void print_vec(vector<long long> &vec) {
  for (auto e : vec) {
    cout << e << " ";
  }
  cout << "\n";
}
void print_vec(vector<bool> &vec) {
  for (auto e : vec) {
    cout << e << " ";
  }
  cout << "\n";
}
static int speed_increase = []() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(NULL);
  return 0;
}();
void resetc(unordered_map<long long, long long> &comp) {
  long long prod = 1;
  comp[1] = 0;
  for (int i = 1; i < 12; i++) {
    prod *= 2;
    comp[prod] = 0;
  }
}
string check(unordered_map<long long, long long> &comp) {
  for (int i = 0; i < 11; i++) {
    long long pw = pow(2, i);
    comp[2 * pw] += comp[pw] / 2;
  }
  if (comp[2048] >= 1)
    return "yEs";
  else
    return "nO";
}
void print_map(unordered_map<long long, long long> &comp) {
  for (auto e : comp) {
    cout << e.first << " : " << e.second << "\n";
  }
  cout << "\n";
}
int main() {
  long double m, n;
  long double ans = 0, last = 0;
  cin >> m >> n;
  for (long double i = m; i > 0; i--) {
    long double t = 1 - pow((i - 1) / m, n);
    ans += i * (t - last);
    last = t;
  }
  cout << ans;
  time();
  return 0;
}
