#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll N = 2e5 + 10;
double dp[1000001];
int main()
{
int t;
cin >> t;
while(t --)
{
int n, k;
cin >> k >> n;
for(int j = 1; j <= n; j ++)
{
if(j == 1)
{
dp[j] = (1.0 + k) / 2.0;
}
else
{
double tmp = floor(dp[j - 1]) / (1.0 * k);//前面第1个掷出的数小于等于后面j-1个期望的概率, 特别要考虑B在掷骰子只会掷出整数
dp[j] = dp[j - 1] * tmp + (1 - tmp) * (floor(dp[j - 1]) + 1 + k)/ 2.0;//floor(dp[j - 1]) + 1 + k, 掷骰子只会掷出整数
}
}
cout << fixed << setprecision(5) << dp[n] << endl;
}
}
卷网之王(cuit第八届校赛)
最新推荐文章于 2022-01-20 12:47:26 发布