#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
#define N 100020
#define B 800
double dp[2][B];
int n, k;
int main() {
scanf("%d%d", &n, &k);
dp[0][1] = 0;
for(int i = 1; i <= n; ++i) {
int cur = i & 1 ^ 1;
int nxt = cur ^ 1;
for(int t = 1; t + 1 < B; ++t) {
dp[nxt][t] = dp[cur][t+1] + t * dp[cur][t] + (t * t + 0.0 + 3 * t) / 2;
dp[nxt][t] /= k * (t + 1);
dp[nxt][t] += (k - 1.0) / k * dp[cur][t];
}
}
printf("%.12lf\n", dp[n & 1][1] * k);
return 0;
}
CodeForces 464D World of Darkraft - 2 (概率)
最新推荐文章于 2020-03-30 16:47:06 发布