分析
容斥原理的模板
#include<bits/stdc++.h>
using namespace std;
const int maxn = 30;
double p[maxn];
int n;
double getAns() {
double ans = 0;
for (int i = 1; i < (1 << n); i++) {
int cnt = 0;
double sum = 0;
for (int j = 0; j < n; j++) {
if (i & (1 << j)) {
cnt++;
sum += p[j];
}
}
//cout << sum << "????" << endl;
if (cnt & 1) {
ans += (1 / sum);
}
else {
ans -= (1 / sum);
}
}
return ans;
}
int main() {
while (cin >> n) {
for (int i = 0; i < n; i++)cin >> p[i];
printf("%.6lf\n", getAns());
}
}