栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

2020安徽省ACM赛9月月赛(重现版)-问题 B: 英雄打怪兽

C/C++/C# 更新时间:发布时间: 百科书网 趣学号
题目描述

在遥远的地方有一个怪兽和一位英雄,英雄带着a支箭去挑战这个怪兽,怪兽的血量为b,英雄的每次射击能扣除怪兽的一点血量,如果怪兽的血量小于等于0,那么英雄就挑战成功。令人烦恼的是,英雄每次射击后,怪兽都会生气,向英雄发起反击,有50%的概率使得英雄掉落一支箭,现在请问英雄挑战成功的概率是多少?输出一个保留5位小数的浮点数。

输入

程序输入说明
两个数a,b(0 输出

程序输出说明
一个保留5位小数的浮点数,表示英雄挑战成功的概率

样例输入
10 5
样例输出
1.00000
题解代码
#include
using namespace std;
int main()
{
    double a;//a表示英雄的弓箭数目
    double b;//b表示小怪兽的血量
    double c;//c表示英雄胜利的概率
    cin>>a>>b;//输入a b
    c=1.00000;//初定义英雄胜率为1.00000
    if(a=2*b)
    {//考虑极端情况-英雄必赢的情况
        printf("%.5f",c);//题目对输出有位数要求则采用printf
        return 0;
    }
    for(int i=1;i<=a/2;i++)
    {//核心运算 即假设英雄要消耗怪兽一滴血需要两支箭
        c=c*2;//算出英雄消耗掉所有箭 会出现的情况
    }
    c=1/c;//在英雄消耗掉所有箭后仅有英雄消耗怪兽一滴血需要两支箭的时候失败
    printf("%.5f",1-c);//1-c输出英雄成功概率
    return 0;
}
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/889426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号