2019内蒙古大学生程序设计竞赛I
链接:https://www.bttcacm.cn/problem.php?id=1787
题目描述
下面是传说中的赌徒必胜策略:
如果输的话按上把下注额翻倍下注,这样即使连败,因为总有获胜的时候,只要赢一次就可以把输的钱全部赢回,当钱不足以按策略下注时,就把拥有的所有钱都下注。
现在两个赌狗 A,B 都学到了这个方法,他们决定带着钱找对方练一练,他们每次都进行一次胜率各为 50%的赌局,赌局的大小由上局输的人决定(第一次赌局的大小为 1 元),一直到其中一个人的钱输光为止。请你告诉这两个赌狗,他们赢光对方钱的概率为多少。
输入格式
第一行一个正整数 T,表示共有 T(T<=100)组数据
接下来每一行两个正整数 a,b(1<=a,b<=100),分别表示 A 和 B 拥有的钱
输出格式
输出一个实数,表示 A 获胜的概率,保留三位小数。
输入样例
1
1 1
输出样例
0.500
思路:我也不知道怎么证明,之前写过类似的题目,好像是有什么结论的。
不过这个赌徒的必胜策略看起来好像的确是挺有道理的。
AC代码:
#include<bits/stdc++.h>
#define INF 0x3F3F3F3F
#define endl '\n'
#define css(n) cout<<setiosflags(ios::fixed)<<setprecision(n);
using namespace std;
typedef long long ll;
const int maxn=30050;
int n,m;
int t;
double a,b;
int main()
{
std::ios::sync_with_stdio(false);
cin>>t;
while(t--)
{
double a,b;
cin>>a>>b;
double fin=a/(a+b);
css(3);
cout<<fin<<endl;
}
return 0;
}