#include <bits/stdc++.h>
using namespace std;
template <class myType>
ostream &operator<<(ostream &out, const vector<myType> &object) {
  for (typeof((object).begin()) it = (object).begin(); it != (object).end();
       it++) {
    out << (*it) << ' ';
  }
  cout << endl;
  return out;
}
template <class myType1, class myType2>
ostream &operator<<(ostream &out, const pair<myType1, myType2> &object) {
  out << object.first << ' ' << object.second;
  return out;
}
template <class myType>
istream &operator>>(istream &in, vector<myType> &object) {
  myType c;
  cin >> c;
  object.push_back(c);
  return in;
}
template <class myType>
istream &operator>>(istream &in, myType object[]) {
  scanf(" ");
  myType c;
  std::string line;
  std::getline(in, line);
  std::istringstream iss(line);
  int ind = 0;
  while (iss >> c) {
    object[ind] = c;
    ind++;
  }
  return in;
}
template <class myType1, class myType2>
istream &operator>>(istream &in, pair<myType1, myType2> &object) {
  in >> object.first >> object.second;
  return in;
}
template <class myType>
void fill(myType container[], myType val, int len) {
  for (int i = 0; i < len; i++) {
    container[i] = val;
  }
}
template <class myType>
myType operator%(pair<myType, pair<myType, myType> > &a, int b) {
  switch (b) {
    case 0:
      return a.first;
    case 1:
      return a.second.first;
    case 2:
      return a.second.second;
  }
}
template <class myType>
myType operator%(pair<myType, myType> &a, int b) {
  switch (b) {
    case 0:
      return a.first;
    case 1:
      return a.second;
  }
}
inline pair<int, int> sorted(pair<int, int> a) {
  return pair<int, int>(min(a % 0, a % 1), max(a % 0, a % 1));
}
template <class myType>
myType fastpow(register myType a, register unsigned long long b) {
  register myType result = 1;
  while (b) {
    if (b & 1) {
      result *= a;
    }
    b >>= 1;
    a *= a;
  }
  return result;
}
int N, M;
int main() {
  cin >> M >> N;
  double result = 0.0;
  double m = M;
  double prev = 0.0;
  double jo;
  for (int i = 1; i < M + 1; i++) {
    jo = -prev;
    jo += (prev = fastpow((double)i / m, N));
    result += jo * i;
  }
  cout << result;
  return 0;
}
