比赛地址:https://ac.nowcoder.com/acm/contest/11243

A:
每次开宝箱得到滚木的概率为 图片说明 ,第 次开宝箱得到与之前相等卡牌的概率为 图片说明 ,因为第 次开宝箱之前已经获得了 张不同的卡牌,而且获得每张卡牌的概率为 图片说明 ,所以获得与之前相等的卡牌的概率为两者相乘。

图片说明 为第 次获得卡牌的概率,则 图片说明 ,其中 图片说明 表示可以开到第 个宝箱的概率,即之前的 个宝箱都没有开到滚木, 图片说明 表示 图片说明 ,即直接获得滚木概率和合成获得滚木的概率相加。

利用数学期望的公式, 图片说明 ,因为当 图片说明图片说明 ,所以 个宝箱之内,必能出现滚木。

所以,答案为 图片说明

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double n;
    cin>>n;
    double x=0,ans=0;
    for(double i=1;i<=n;i++)
    {
        ans+=(1-x)*i/n*i;
        x+=(1-x)*i/n;
    }
    printf("%.2f\n",ans);
    return 0;
}