设dp[i] 为前i个winners获得pizza的期望。
状态转移方程: dp[i+1] = dp[i]*dp[i] / N + (dp[i] + 1)*(N - dp[i]) / N 。
代码:
#include<cstdio>
#include<iostream>
using namespace std;
const int maxm = 100005;
double dp[maxm];
int n,m;
int main(){
scanf("%d%d",&n,&m);
dp[0] = 0;
for(int i=1;i<=m;i++){
dp[i] = dp[i-1]*dp[i-1]/n + (dp[i-1]+1)*(n-dp[i-1])/n;
}
printf("%.9f\n",dp[m]);
return 0;
}