题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4336
题意简单,直接用容斥原理即可
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cstdlib> #include <cmath> #include <vector> #include <list> #include <deque> #include <queue> #include <iterator> #include <stack> #include <map> #include <set> #include <algorithm> #include <cctype> #include <sstream> using namespace std; typedef long long LL; const int N=22; const LL II=100000000; const int INF=0x3f3f3f3f; const double PI=acos(-1.0); double p[N]; int main() { int i,j,n,T,ca=0; while(cin>>n) { double xh=0,sum=0; for(i=1;i<=n;i++) scanf("%lf",&p[i]); for(i=1;i<(1<<n);i++) { sum=0; int odd=0; for(j=0;j<n;j++) { if((1<<j)&i) { odd++; sum+=p[j+1]; } } if(odd&1) // 加奇减偶 xh+=1/sum; else xh-=1/sum; } printf("%.6f ",xh); } return 0; } /* 3 0.1 0.2 0.3 */