题目大意:12个题目,给定每个题目能做出来的概率,求总共做对 0-12 道题的概率.
分析:一共12道题,我们可以二进制枚举做对题目的所有情况图片说明 ,然后每一种情况的算出做对题数的概率,然后累加输出即可.

#include<bits/stdc++.h>
using namespace std;


const int maxn=2e5+10;
double a[13][10];
double ans[13][10];
double res[13];

int main()
{
    for( int i=1;i<=12;i++ ) cin>>a[i][0];
    for( int i=1;i<=12;i++ ) cin>>a[i][1];
    for( int i=1;i<=12;i++ ) cin>>a[i][2];

    for( int i=1;i<=12;i++ )
    {
        ans[i][0]=(1-a[i][0])*(1-a[i][1])*(1-a[i][2]);
        ans[i][1]=1-ans[i][0];
        res[i]=0;
    }

    for(int i=0;i<(1<<12);i++ )
    {
        int cnt=0;
        double tmp=1;
        for( int j=1;j<=12;j++ )
        {
            if( i>>(j-1) & 1 )
            {
                cnt++;
                tmp*=ans[j][1];
            }
            else tmp*=ans[j][0];
        }
        res[cnt]+=tmp;
    }
    for( int i=0;i<=12;i++ ) printf("%.6f\n",res[i]);
}