2938. ZZZ vs MJQ 2

单点时限: 2.0 sec

内存限制: 256 MB

经过几年的平静,最终,ZZZ 和 MJQ 还是展开了殊死较量。

由于两个人体力都有限,他们一共可以战斗 N 回合 (N < 10),且 N 是奇数。战斗中,若其中一人赢了半数以上回合数则获得胜利,战斗立即结束。队员们必然挺自己的队长 ZZZ,但是这是一场世纪大战,谁胜谁负真不好说,队员们想知道自己队长理论获胜的概率是多少。已知 ZZZ 在单一回合中获胜的概率为 p(0< p <1),请你帮忙计算一下 ZZZ 获胜的概率是多少?

输入格式
第 1 行是一个整数 T 表示测试数据组数

接下来是 T 组测试数据,对于每组数据:

每行两个数 N,p,代表局数和 ZZZ 在一局中获胜的概率。

输出格式
输出 ZZZ 最终获胜的概率(保留小数点后 3 位)。

样例
input
2
1 0.1
3 0.1
output
0.100
0.028

/*
思路:其实就是求赢一半以上的概率
*/
#include<bits/stdc++.h>
using namespace std;
int T,n,i;
double p,rst;
int c(int n,int m)//Cnm二项试
{
    int rst=1;
    for(int i=1;i<=m;++i)
    rst*=n+1-i,rst/=i;
    return rst;
}
int main()
{
    cin>>T;
    while(T--){
        cin>>n>>p;
        rst=0;
        for(i=n/2+1;i<=n;++i)
        rst+=c(n,i)*pow(p,i)*pow(1-p,n-i);//p^i*(1-p)^(n-i)
        printf("%.3f\n",rst);
    }
    return 0;
}
发布了45 篇原创文章 · 获赞 21 · 访问量 471

猜你喜欢

转载自blog.csdn.net/qq_40394960/article/details/105149501
zzz