首页 > 其他 > 详细

微软2017年预科生计划在线编程笔试 A Legendary Items

时间:2017-04-04 15:05:02      阅读:332      评论:0      收藏:0      [点我收藏+]

思路:

获得第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 }

 

微软2017年预科生计划在线编程笔试 A Legendary Items

原文:http://www.cnblogs.com/wangyiming/p/6664958.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!