前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛客练习赛38 B. 出题人的女装(条件概率)

牛客练习赛38 B. 出题人的女装(条件概率)

作者头像
Ch_Zaqdt
发布2019-01-28 11:40:14
3470
发布2019-01-28 11:40:14
举报
文章被收录于专栏:Zaqdt_ACM

题目链接:https://ac.nowcoder.com/acm/contest/358/B

       一道概率论的题,涉及到了贝叶斯定理,P(AB) = P(B) * P(A|B) = P(B|A) * P(A),其中P(AB)表示A事件和B事件同时发生的概率,P(A|B)表示在B发生的情况下发生A的概率,那么对于这道题来说我们要求的就是在第一次取到了女装的情况下,第二次又取到女装的概率,那么P(AB)就是两次都取到女装的概率,P(A)就是第一次取到女装的概率,P(B)就是第二次取到女装的概率,那么P(B|A)就是在第一次取到女装的情况下第二次取到女装的概率,满足P(B|A) = P(AB) / P(A),就可以得到两个式子:

       然后我们就可以求出来P(B|A)了,但是又因为需要求出小数形式和分数形式,前者需要double,后者需要ll,所以操作起来会很麻烦,所以这里就需要进行一次化简,把P(AB) / P(A)的情况化简为:


AC代码:

代码语言:javascript
复制
#include <bits/stdc++.h>
#define ll long long
using namespace std;
double x,y,n,m;
int t;

int main()
{
	cin>>n>>m>>x>>y>>t;
	ll xx = x * m * (x - 1) * (m - 1) + n * y * (y - 1) * (n - 1);
	ll yy = (n - 1) * (m - 1) * (x * m + y * n);
	if(t == 0){
		printf("%.3f\n", 1.0 * xx / yy);
	}
	else{
		printf("%lld/%lld\n", xx / __gcd(xx, yy), yy / __gcd(xx, yy));
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年01月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档