HDU 4336 期望容斥

#include<bits/stdc++.h>
using namespace std;
double A[50];
int n;double ans;
void dfs(int x,int y,double a){
    if(x==n+1){
        if(y==0)return;
        if(y%2==1)ans+=1/a;
        else ans-=1/a;
        return;
    }
    dfs(x+1,y+1,a+A[x]);
    dfs(x+1,y,a);
}
int main(){
    while(cin>>n){
    	ans=0;
	    for(int i=1;i<=n;++i)cin>>A[i];
	    dfs(1,0,0);
	    printf("%.6lf\n",ans);
	} 
}

猜你喜欢

转载自blog.csdn.net/Gipsy_Danger/article/details/83119010