首页 > 代码库 > 2013 南京邀请赛 A play the dice 求概率

2013 南京邀请赛 A play the dice 求概率

 1 /**
 2 大意:给定一个色子,有n个面,每一个面上有一个数字,在其中的m个面上有特殊的颜色,当掷出的色子出现这m个颜色之一时,可以再掷一次。。求其最后的期望
 3 思路:假设 期望为ans
 4      ans = 1/n*(a[b[1]]+ans)+1/n*(a[b[2]]+ans)+....+1/n*(a[b[m]]+ans) +...+1/n*(a[k])....
 5      ans = m/n*ans+1/n*(a[1]+a[2]+a[3]+...a[n])
 6      ans = m/n*ans+sum/n
 7      ans = sum/(n-m)
 8 若sum =0 ----〉ans =0;
 9      若n-m=0-----〉ans = inf
10      否则 ans = sum/(n-m)
11 学习之处:进行简单的推导。。自己还是欠缺
12 **/
13 #include <iostream>
14 #include <cstdio>
15 using namespace std;
16 double  a,b;
17 double  n,m;
18 int main()
19 {
20     while(scanf("%lf",&n)==1){
21         double  sum =0;
22         for(int i=0;i<n;i++){
23             scanf("%lf",&a);
24             sum += a;
25         }
26         scanf("%lf",&m);
27         for(int i=0;i<m;i++)
28             scanf("%lf",&b);
29         if(sum==0){
30             printf("0.00\n");
31             continue;
32         }
33         if((n-m)==0){
34             printf("inf\n");
35         }else{
36             printf("%.2lf\n",sum/(n-m));
37         }
38     }
39     return 0;
40 }