#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using Int = long long; template ostream &operator<<(ostream &os, const pair &a) { return os << "(" << a.first << ", " << a.second << ")"; }; template void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; } template bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; } template bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; } /* f(a_1, ..., a_{n-1}, 2 b - 1) + f(a_1, ..., a_{n-1}, 2 b) = \sum_{1= 2) z(4) - 1 z(3, 1) - z(3) + 1 z(2, 2) - z(2) + 1 z(2, 1, 1) - z(2, 1) + z(2) - 1 total: 3 z(4) - 2 z(3) z(5) - 1 z(4, 1) - z(4) + 1 z(3, 2) - z(3) + 1 z(2, 3) - z(2) + 1 z(3, 1, 1) - z(3, 1) + z(3) - 1 z(2, 2, 1) - z(2, 2) + z(2) - 1 z(2, 1, 2) - z(2, 1) + z(2) - 1 z(2, 1, 1, 1) - z(2, 1, 1) + z(2, 1) - z(2) + 1 total: 4 z(5) - 3 z(4) */ int main() { int X, N; for (; ~scanf("%d%d", &X, &N); ) { double ans; switch (X) { case 1: { ans = 1.0 - pow(0.5, N + 1); } break; case 2: { if (N == 1) { ans = 0.5; } else if (N == 2) { ans = riemann_zeta(2) - 1.0; } else { ans = (N - 1) * riemann_zeta(N) - (N - 2) * riemann_zeta(N - 1); } } break; default: assert(false); } printf("%.12f\n", ans); } return 0; }