题目描述
传送门
题目大意:一个口袋里有 n 个红色或蓝色的球。 n + 1 种颜色分布情况(i 个红球 n − i 个蓝球)的概率是相等的。
B 从口袋中不放回地摸出了 p 个球,其中有 q 个是红色的。求 B再摸一个球时,摸出的球是红色的概率。
题解
设
Nk
表示n个球中有k个红球的概率。
A
表示p个球中有q个红球
那么
P(Nk)=1n+1
P(A)=C(k,q)C(n−k,p−q)C(n,p)
P(B|ANk)=k−qn−p
P(B|A)=P(AB)P(A)
P(B|A)=∑kP(AB|Nk)P(Nk)∑kP(A|Nk)P(Nk)
P(B|A)=∑kP(B|ANk)P(A|Nk)P(Nk)∑kP(A|Nk)P(Nk)
P(B|A)=∑kk−qn−pC(k,q)C(n−k,p−q)C(n,p)∑kC(k,q)C(n−k,p−q)C(n,p)
P(B|A)=∑kk−qn−pk!(k−q)!q!(n−k)!(p−q)!(n−k−p+q)!∑kC(k,q)C(n−k,p−q)C(n,p)
是分子中
k−q
于
(k−q)!
约分,再除以一个
(q+1)
,那么式子可以化简成
P(B|A)=q+1n−p∑kC(k,q+1)C(n−k,p−q)∑kC(k,q)C(n−k,p−q)
考虑
∑kC(k,q)C(n−k,p−q)
如何化简,就相当于是n+1个盒子,p+1个小球,枚举的k就相当于是第q+1个小球放入的位置,所以化简后就是
C(n+1,p+1)
原式=q+1n−pC(n+1,p+2)C(n+1,p+1)=q+1p+2
PS: 贝叶斯公式
P(B|A)=P(AB)P(A)=P(A|B)P(A)P(B)
P(AB|C)=P(A|BC)P(B|C)
怎么证明?
P(A|BC)=P(ABC)P(BC),P(B|C)=P(BC)P(C),P(AB|C)=P(ABC)P(C)
所以得证。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,p,q;
int main()
{
int T=0;
while (scanf("%d%d%d",&n,&p,&q)!=EOF)
printf("Case %d: %.4lf\n",++T,(double)(q+1.0)/(double)(p+2.0));
}