讨厌之处在于要求花费
花费可以视为上次花费+1 和次数相等
先考虑次数
(f_i=frac{n-i}{n}*f_{i+1}+frac{i}{n}*f_i+1=f_{i+1}+frac{n}{n-i})
那么期望呢
(g_i=frac{i}{n}*(g_i+f_i+1)+frac{n-i}{n}*(g_{i+1}+f_{i+1}+1))
啥意思呢?当前花费为总花费(g)部分加上期望次数+1(本次花费)
化简一下
(g_i=frac{i}{n-i}*f_i+g_{i+1}+f_{i+1}+frac{n}{n-i})
开始运算
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
double n;
double Archie[1000001];
double Aimee[100001];
int main(){
scanf("%lf",&n);
for(int i=n-1;i>=0;--i){
Archie[i]=Archie[i+1]+n/(n-i);
Aimee[i]=i/(n-i)*(Archie[i]+1)+Archie[i+1]+Aimee[i+1]+1;
}
printf("%.2lf",Aimee[0]);
return 0;
}