比赛地址: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; }