DZY Loves Balls
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 748 Accepted Submission(s): 412
Problem Description
There are
n
black balls and
m
white balls in the big box.
Now, DZY starts to randomly pick out the balls one by one. It forms a sequence S . If at the i -th operation, DZY takes out the black ball, Si=1 , otherwise Si=0 .
DZY wants to know the expected times that '01' occurs in S .
Now, DZY starts to randomly pick out the balls one by one. It forms a sequence S . If at the i -th operation, DZY takes out the black ball, Si=1 , otherwise Si=0 .
DZY wants to know the expected times that '01' occurs in S .
Input
The input consists several test cases. (
TestCase≤150
)
The first line contains two integers, n , m(1≤n,m≤12)
The first line contains two integers, n , m(1≤n,m≤12)
Output
For each case, output the corresponding result, the format is
p/q
(
p
and
q
are coprime)
Sample Input
1 1 2 3
Sample Output
1/2 6/5HintCase 1: S='01' or S='10', so the expected times = 1/2 = 1/2 Case 2: S='00011' or S='00101' or S='00110' or S='01001' or S='01010' or S='01100' or S='10001' or S='10010' or S='10100' or S='11000', so the expected times = (1+2+1+2+2+1+1+1+1+0)/10 = 12/10 = 6/5
Source
算是概率问题吧,m个白球n个黑球随机排列,问白黑相邻的期望。
共有m+n个球,第i个位置放白球有m种情况,第i+1个位置放黑球有n种,则期望为m*n/(m+n)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a,b,i,j,k,l,m,n;
int ac(int a,int b)
{
k=min(a,b);
for(i=k;i>=1;i--)
if(a%i==0&&b%i==0)
return i;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
k=ac(m*n,m+n);
printf("%d/%d\n",m*n/k,(m+n)/k);
}
}