题解 | #谁是神射手#

谁是神射手

https://ac.nowcoder.com/acm/problem/17866

A 打中瓶子的概率是:

  • 第一次打中:a%a\%
  • 第三次打中:(1a%)×(1b%)×a%(1-a\%)\times(1-b\%)\times a\%(第一、二次都没打中)
  • 第五次打中:(1a%)×(1b%)×(1a%)×(1b%)×a%(1-a\%)\times(1-b\%)\times(1-a\%)\times(1-b\%)\times a\%(第一、二、三、四次都没打中)
  • \cdots

B 打中瓶子的概率相似,注意这个循环不能无限持续,可以考虑设定一个 eps 值,当影响小于 eps 时就可以忽略。

另外值得注意的是,B 打中瓶子的概率不能通过 1A1-A 的概率得到,理由是他们可能根本打不中瓶子。(比如概率都是 0%0\%

/*
A: a% + (1-a%)(1-b%)a% + (1-a%)(1-b%)(1-a%)(1-b%)a% ...
B: (1-a%)b% + (1-a%)(1-b%)(1-a%)b% + ...
*/
#include<cmath>
#include<cstdio>
const double eps = 1e-12;
int main(){
    double a, b;
    scanf("%lf%lf", &a, &b);
    a /= 100, b /= 100;
    double A = 0, _a = 1 - a, _b = 1 - b;
    while (a > eps) {
        A += a;
        a *= _a * _b;
    }
    double B = 0; b *= _a;
    while (b > eps) {
        B += b;
        b *= _a * _b;
    }
    if (fabs(A - B) < 1e-9) puts("equal");
    else if (A > B) puts("MWH");
    else puts("CSL");
}
全部评论

相关推荐

点赞 评论 收藏
分享
头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
3
1
分享
牛客网
牛客企业服务