其实是一道概率水题,假如是一个n面体,现在有 i 个面已经出现过了
那么丢出没出现过的面的期望次数是d=(i/n)d+1 ---> d=n/(n-i)
遍历 i 从0~n-1,将d加起来就是答案,这道题直接暴力递推就可以了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int T,n,kase=0;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
double ans=1.0;
for(int i=1;i<n;i++)
{
double t=(double)n/(n-i);
ans+=t;
}
printf("Case %d: %.6f\n",++kase,ans);
}
return 0;
}