问题描述
一个盒子里有n个黑球和m个白球。现在DZY每次随机从盒子里取走一个球,取了n+m次后,刚好取完。DZY用这种奇怪的方法生成了一个随机的01串S[1⋯(n+m)]。如果DZY第i次取出的球是黑色的,那么S[i]=1,如果是白色的,那么S[i]=0。
DZY现在想知道,'01'在S串中出现的期望次数。
输入描述
输入有多组测试数据。 (TestCase≤150)
每行两个整数, n, m(1≤n,m≤12)
输出描述
对于每个测试数据,输出一行答案,格式为p/q(p,q互质)。
输入样例
1 1
2 3
输出样例
1/2
6/5
Hint
Case 1: S='01' or S='10', 所以期望次数 = 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',
所以期望次数 = (1+2+1+2+2+1+1+1+1+0)/10 = 12/10 = 6/5
*************************************************************************************************
本题的官方解释是数学:
第i位上出现0,第i+1位出现1,这种概率是:(m/(n+m))*(n/(n+m-1)),0的位置可以出现在第一个一直到倒数第二个;所以累加(n+m-1),相承,公式是n*m/(n+m); 我的做法不是这样,组合数学:
刚开始看作所有的1发个在最左边,0放在最右边,一共最多有n或m个01串,(个数是其中较小的那个),枚举串的个数从1到最大,当有1
个01串的时候,从n个1中取一个空当,用来插入0,从m个0中可以选1个0放到空档里,也可以选两个一直到选m个,所以对于每一个1都有m种插法,c(n,1)*c(m,1)*1;
当有两个01串的时候,取1,c(n,2),取0,第一个1有1到m-1种插法,第二个1有剩余的插法,组合数公式,c(m,2);c(n,2)*c(m,2)*2;
累加下去
总共的排列数就是c(n+m,n);
相比一下,约分,就得到答案了; 代码如下:
 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#define ll long long
using namespace std;
int N,M;
long long k,t;
long long zuhe(ll n,ll x)
{
ll di=,gao=,ans=;
for(ll i=;i<=x;i++)
{
di*=n;
n--;
gao*=i;
}
return di/gao;
}
void yuefen(ll a,ll b)
{
for(ll i=b;i>=;i--)
{
if(a%i==&&b%i==)
{
k=a/i;
t=b/i;
return ;
}
}
}
int main()
{
// freopen("in","r",stdin);
// freopen("out.out","w",stdout);
while(scanf("%d%d",&N,&M)!=EOF)
{
k=;
t=;
for(ll i=;i<=N;i++)
{
ll temp=;
if(i>M)
break;
t+=i*zuhe(N,i)*zuhe(M,i);
}
k=zuhe(N+M,M);
yuefen(k,t);
printf("%I64d/%I64d\n",t,k);
}
return ;
}

最新文章

  1. android基于口令加密快速搞懂(一)
  2. 连接有密码的mongodb
  3. asp.net session
  4. DNS查询指令host
  5. 每天一道LeetCode--434. Number of Segments in a String
  6. BCB6编译LUA5.15成功!
  7. leetcode之Rectangle Area
  8. java常用包
  9. 2016 ACM/ICPC Asia Regional Dalian ICPC大连现场赛
  10. 关于vue-axios的post方式,后台无法解析传参问题
  11. linux安装tomcat Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  12. webpack 配置缓存
  13. 查看线程的进程id
  14. python3: 文件与IO
  15. PAT 甲级 1087 All Roads Lead to Rome
  16. 我的学习工作经历,一个园林专业中专毕业生的IT之路 学习编程 创业
  17. Linux 共享库(动态库)
  18. unittest框架(二)单元测试及测试报告
  19. ASP.NET AJAX web chat application
  20. javascript总结50:认识instanceof 与 原型链

热门文章

  1. 在DataGridView控件中设置数据显示格式
  2. bootstrap 翻页的状态
  3. maven,gradle本地缓存位置
  4. Postman 没有走hosts文件
  5. Re:从零开始的Linux之路(目录配置)
  6. python入门:print打印输出的用法
  7. 重写laravel 异常抛出处理
  8. Thinkphp 5 调试执行的SQL语句
  9. pandas按索引插入对应值的处理方法 - join
  10. Python基础——列表(list)