3145 扔球游戏
Bob最近迷上了扔球游戏,即一个盒子里有nn个黑球、mm个白球,Bob每次从盒子里随机取出一个球扔掉,如果第i次取出的球是白球,则令;如果第i次取出的球是黑球,则令
求问在序列中,期望有多少
满足
且
输入
一行两个整数n,m,分别表示黑球的个数和白球的个数
输出
一行,输出期望的最简分数形如p/q
数据范围
对于30%的数据: 1<=n,m<=12
对于60%的数据: 1<=n,m<=100
对于100%的数据:1<=n,m<=1000
输入样例
输入样例1:
1 1
输入样例2:
2 3
输出样例
输出样例1:
1/2
输出样例2:
6/5
解析:
可考虑期望的可加性。第i(1≤i<n+m)个位置上出现0,第i+1个位置上出现1的概率是(n/(m+n))*(m/(n+m-1))
一共有n+m-1个i,因此总期望为(n*m)/(n+m)
放代码:
#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;
}