相信我,这真的是一个暴力!

链接

题目描述

氧气少年对月色说,打打暴力说不定真的会出奇迹。长途看到后出了一道题想难住氧气少年。月色看了看题面说,说不定打打暴力真的可以出奇迹。

从前,有两个小和尚在石头剪刀布的猜拳游戏。

请回忆石头剪刀布的游戏规则:两个人同时伸出手,分别出示石头、剪刀或布的手势。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出示的手势相同,则是平局,需要重新进行游戏。

每个小和尚出的手势的概率可以表示成几成。例如:1 成是 10%,2 成是 20%,以此类推,10成是 100%。成数不会小于 0,也不会大于 10。

每局和尚出同一手势的概率不变。

现在,分别给出每个和尚出石头、剪刀、布的概率,请求出决出胜者的期望轮数,或者指出永远不会决出胜者。

输入描述

在这里插入图片描述

输出描述

在这里插入图片描述

示例1

输入

2
5 4 1
1 3 6
10 0 0
10 0 0

输出

1.298701
Sorry,NoBruteForce

思路

这里要用到一个知识点,就概率和期望的关系。
当试验次数无限多的时候,概率*试验次数=事件发生的次数
我们换算一下就是 1/概率=试验次数/事件发生的次数
试验次数/事件发生的次数=平均发生的次数(期望)

现在看这一题,我们可以知道决出胜者可以试验无限次,我可以100次的时候决出胜者,也可以更多次。

然后概率怎么求呢? 这里试验次数有无限多,就如抛硬币,抛很多次,要计算正反面出现的次数,然后发现正反面出现的概率是1/2,这里我们也可这样想。两人猜拳最后要么是平局,要么其中一个人胜利,我们可以先求出平局的概率,也就是3种情况:
1.都是石头 a1a2
2.都是剪刀 b1
b2
3.都是布 c1c2
平局概率:a1
a2+b1b2+c1c2
赢的概率:1 - 平局概率

上面的公式的推出,胜者轮数期望=1/赢的概率

如果平局概率是1,就不会有胜者,输出Sorry,NoBruteForce,否则输出1/赢的概率

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int a1,b1,c1,a2,b2,c2;
        cin>>a1>>b1>>c1;
        cin>>a2>>b2>>c2;
        int ans=10*10-a1*a2-b1*b2-c1*c2; //这里就没有换成小数了,一样的
        if(ans==0) cout<<"Sorry,NoBruteForce\n";
        else printf("%.4f\n",100.0/ans);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值