SGU 495

扫码查看
 #include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll inf = ;
const int N =;
int n,m;
double dp[N];
/*
有N个礼物,M次选择,每次取的可能是未被选到的礼物
(礼物取走把空盒子放回可以被别人再次选择)
也有可能是空盒子,问你M次选择后被选走的礼物数目的期望
*/
int main()
{
/*
dp[i] :第i个人选择后共取走礼物数目的期望
显然dp[1]= 1.0(只能选出一个,并且一定会被选到(因为没有空盒子))
dp[i]之前别人共选走的礼物数目的期望+这次第i个人选到礼物的期望
dp[i] = dp[i-1]+(n-dp[i-1])/n
*/
scanf("%d%d",&n,&m);
dp[]= 1.0;
for(int i =;i<=m;i++){
dp[i] =dp[i-]+(n*1.0-dp[i-])/n;
}
printf("%.10f\n",dp[m]);
return ;
}
05-11 15:37
查看更多