原题链接
解题思路:本题我们很容易知道每道题解决的概率和不能解决的概率。所以我们只需要枚举一下每道题解决还是不解决最后累加解决i题的概率。最后输出即可
C++代码
#include <bits/stdc++.h>
// #define int long long
using namespace std;
const int N = 15;
double a[N], b[N], c[N], res[N];
void dfs(int u, int cnt, double sum)
{
if (u > 12)
{
res[cnt] += sum;
return ;
}
dfs(u + 1, cnt + 1, sum * (1 - (1 - a[u]) * (1 - b[u]) * (1 - c[u])));
dfs(u + 1, cnt, sum * (1 - a[u]) * (1 - b[u]) * (1 - c[u]));
}
signed main()
{
for (int i = 1; i <= 12; i ++ ) cin >> a[i];
for (int i = 1; i <= 12; i ++ ) cin >> b[i];
for (int i = 1; i <= 12; i ++ ) cin >> c[i];
dfs(1, 0, 1);
for (int i = 0; i <= 12; i ++ )
{
cout << fixed << setprecision(6) << res[i] << endl;
}
return 0;
}