思路:

获得第i(i = 0, 1, ..., n - 1)件物品的概率仅由公式p / (1 << i)决定,所以获得这i件物品之间是相互独立的。迭代计算获得所有i件物品的期望再求和即可。不要被题目中的树形结构所蒙蔽。

实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int p, q, n;
 6 
 7 double get_item(int i)
 8 {
 9     int pi = i < 7 ? p / (1 << i) : 0;
10     double tmp = 1;
11     double E = 0;
12     for (int j = 0; j <= 100; j++)
13     {
14         E += tmp * (j + 1) * pi * 0.01;
15         if (pi == 100)
16             return E;
17         tmp *= 1 - pi * 0.01;
18         pi += q;
19         if (pi >= 100)
20         {
21             pi = 100;
22         }
23     }
24     return E;
25 }
26 
27 int main()
28 {
29     double ans = 0;
30     cin >> p >> q >> n;
31     for (int i = 0; i < n; i++)
32     {
33         ans += get_item(i);
34     }
35     printf("%.2lf\n", ans);
36     return 0;
37 }

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
  • 2021-08-19
  • 2021-09-03
  • 2021-10-27
  • 2021-07-12
  • 2021-05-22
猜你喜欢
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
  • 2022-12-23
  • 2022-03-08
相关资源
相似解决方案