
在遥远的地方有一个怪兽和一位英雄,英雄带着a支箭去挑战这个怪兽,怪兽的血量为b,英雄的每次射击能扣除怪兽的一点血量,如果怪兽的血量小于等于0,那么英雄就挑战成功。令人烦恼的是,英雄每次射击后,怪兽都会生气,向英雄发起反击,有50%的概率使得英雄掉落一支箭,现在请问英雄挑战成功的概率是多少?输出一个保留5位小数的浮点数。
输入程序输入说明
两个数a,b(0
输出
程序输出说明
一个保留5位小数的浮点数,表示英雄挑战成功的概率
10 5样例输出
1.00000题解代码
#includeusing 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; }