标签:
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5194
题目大意:
袋子里有N个黑球、M个白球。用1表示取出来的是黑球,0表示取出来的是白球。不放回
的从袋子里取出这N+M个球。求相邻取出的两个球第一个球白球,第二个球是黑球的期望
次数是多少,即出现"01"的期望次数是多少。
思路:
考虑期望可加。第i(1<=i<=N+M)个位置上出现白球的概率为M/(M+N),则i+1个位置上
出现黑球的概率为N/(M+N-1)。因为白球只能在1~M+N-1个位置上出现(后边还有黑球)。
所以出现"01"的次数为(M+n-1)次。则总的期望 = M/(M+N) * N/(M+N-1) * (M+N-1),
即M*N/(M+N)。最后求M*N和M+N的最大公约数,将分子分母约分后输出就可以了。
AC代码:
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int GCD(int a,int b) { if(a < b) int temp = a, a = b, b = temp; if(b == 0) return a; return GCD(b,a%b); } int main() { int a,b; while(cin >> a >> b) { int fz = a*b; int fm = a+b; printf("%d/%d\n",fz/GCD(fz,fm),fm/GCD(fz,fm)); } return 0; }
标签:
原文地址:http://blog.csdn.net/lianai911/article/details/45250875