Description:
個物品,每次購買一個,有 的概率選到第i個物品,問獲得所有物品的期望次數。
Solution:
根據 容斥,有
表示獲得所有元素的期望, 表示獲得其中一個元素的概率
#include <bits/stdc++.h>
using namespace std;
int n;
double ans;
double f[27];
void dfs(int d, double sum, int ff) {
if(d == n + 1) {
if(sum > 0) {
ans += 1. / sum * ff;
}
return;
}
dfs(d + 1, sum + f[d], -ff);
dfs(d + 1, sum, ff);
}
int main() {
while(~scanf("%d", &n)) {
ans = 0;
for(int i = 1; i <= n; ++i) {
scanf("%lf", &f[i]);
}
dfs(1, 0, 1);
printf("%.6f\n", fabs(ans));
}
return 0;
}