题意:一个盒子里有n个黑球和m个白球。现在DZY每次随机从盒子里取走一个球,取了n+m次后,刚好取完。DZY用这种奇怪的方法生成了一个随机的01串S[1⋯(n+m)]。如果DZY第i次取出的球是黑色的,那么S[i]=1,如果是白色的,那么S[i]=0。DZY现在想知道,'01'在S串中出现的期望次数。
解题思路:考虑期望的可加性。第i(1≤i<n+m)个位置上出现0,第i+1个位置上出现1的概率是(n/(m+n))*(m/(n+m-1)),
n+m-1
∑(n/(m+n))*(m/(n+m-1)) = (m*n)/(m+n),详见代码。
i = 1
Code:
#include <iostream>
#include <cstdio>
using namespace std;
int gcd(int a,int b)
{
return b==0 ? a:gcd(b,a%b);
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int FenZi = m*n;
int FenMu = n+m;
int tmp = gcd(FenZi,FenMu);
printf("%d/%d\n",FenZi/tmp,FenMu/tmp);
}
return 0;
}
m
mn+
mn+m×nn+m−1