题目链接:https://vjudge.net/problem/UVA-1639

题目大意:

有两个糖果盒,每个盒子里面有n个糖果,每天随机选一个(概率分别为p,1-p),然后吃一颗糖。直到有一天,打开盒子一看,没有糖了。

输入n,p;求此时另外一个盒子里面糖的个数的数学期望。

题目分析:

可以假设另外一个盒子里面还剩下i个,此时一共选了n+n-i次, 所以共有C(2n-i,n)种组合,期望为i*C(2n-i,n)*p^(n+1)*(1-p)^(n-i)+i*C(2n-i,n)*(1-p)^(n+1)*(p)^(n-i);

注意这里面组合数可能非常大,而后面的概率会很小,此时会损失很大的精度。这里可以使用取Log的方法,将乘法转换成减法,然后取e的指数次方即可。

另外可以预先打表求出组合数取log的值降低复杂度。

给出代码:

 #include <cstdio>
 #include <iostream>
 #include <string>
 #include <cmath>
 #include <algorithm>
 #include <cstring>
 using namespace std;
 typedef long double ld;
 *1e5+;
 ];
 ld logc(int n,int m)
 {
    return logF[n]-logF[m]-logF[n-m];
 }
 int main()
 {
     ;i<=;i++)
          logF[i]=logF[i-]+log(i);
      ;double p;
      while(cin>>n>>p)
      {
          ;
          ;i<=n;i++)
          {
             ld c=logc(*n-i,n);
             ld v1=c+(n+)*log(p)+(n-i)*log(-p);
             ld v2=c+(n+)*log(-p)+(n-i)*log(p);
             ans+=i*(exp(v1)+exp(v2));
          }
          printf("Case %d: %f\n",cas++,ans);
      }
      ;
 }

最新文章

  1. js自建方法库(持续更新)
  2. MVC4.0网站发布和部署到IIS7.0上的方法
  3. Java Hour 48 Servlet 简介
  4. nginx使用ssl模块配置HTTPS支持
  5. ActionResult
  6. 自动构建工具Ant的使用-笔记
  7. 从头开始学Java【1】
  8. 学习一门新语言需要了解的基础-12 if和switch对比
  9. 转载微信公众号 测试那点事:Jmeter乱码解决
  10. Python并发编程之学习异步IO框架:asyncio 中篇(十)
  11. MapReduce实现PageRank算法(邻接矩阵法)
  12. CRM项目(一)
  13. 3T - A1 = ?
  14. windows 环境变量
  15. PCL采样一致性算法
  16. libXext.so.6 libXp.so.6 libXt.so.6 is needed by openmotif21-2.1.30-11.el7.i686
  17. R-CNN论文详解 - CSDN博客
  18. JS文档DOM
  19. 【Networking】(转)一个非常好的epoll+线程池服务器Demo
  20. 深入浅出MySQL事务处理和锁机制

热门文章

  1. Spring 4学习——问题与注意事项(一)
  2. 禅道---Bug管理模块
  3. Dubbox中开发REST风格的远程调用
  4. 常用SHELL命令
  5. Angular JS从入门基础 mvc三层架构 常用指令
  6. SQL 和 .NET Framework 数据类型对应表
  7. Discuz添加自定义模板广告
  8. [leetcode-560-Subarray Sum Equals K]
  9. Gradle学习笔记之Groovy
  10. 统计学习方法 三 kNN