题意:

每张彩票上印有一张图案,要集齐n个不同的图案才能获奖。输入n,求要获奖购买彩票张数的期望(假设获得每个图案的概率相同)。

分析:

假设现在已经有k种图案,令s = k/n,得到一个新图案需要t次的概率为:st-1(1-s);

因此,得到一个新图案的期望为(1-s)(1 + 2s + 3s2 + 4s3 +...)

下面求上式中的级数:

所以得到一个新图案的期望为:

总的期望为:

这道题的输出很新颖,如果是分数的话,就要以分数形式输出,具体细节详见代码。

 1 #include <iostream>
 2 #include <sstream>
 3 #include <cstdio>
 4 using namespace std;
 5 typedef long long LL;
 6
 7 LL gcd(LL a, LL b)
 8 {
 9     if(b == 0) return a;
10     return gcd(b, a % b);
11 }
12
13 LL lcm(LL a, LL b)
14 {
15     return a / gcd(a, b) * b;
16 }
17
18 int LL_length(LL x)
19 {
20     stringstream ss;
21     ss << x;
22     return ss.str().length();
23 }
24
25 void print_chars(char c, int n)
26 {
27     for(int i = 0; i < n; ++i)
28         putchar(c);
29 }
30
31 void output(LL a, LL b, LL c)
32 {
33     if(b == 0)
34     {
35         printf("%lld\n", a);
36         return;
37     }
38     int l = LL_length(a);
39     print_chars(' ', l+1);
40     printf("%lld\n", b);
41     printf("%lld ", a);
42     print_chars('-', LL_length(c));
43     printf("\n");
44     print_chars(' ', l+1);
45     printf("%lld\n", c);
46 }
47
48 int main()
49 {
50     int n;
51     while(scanf("%d", &n) == 1)
52     {
53         if(n == 1)
54         {
55             puts("1");
56             continue;
57         }
58         LL x = 1, a = n + 1, b = 0, c;
59         for(int i = 2; i <= n-1; ++i)
60             x = lcm(x, i);
61         c = x;
62         x *= n;
63         for(int i = 2; i <= n-1; ++i)
64             b += x / i;
65         a += b / c;
66         LL g = gcd(b, c);
67         b /= g, c /= g;
68         b %= c;
69         output(a, b, c);
70     }
71
72     return 0;
73 }

代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4180474.html

UVa 10288 (期望) Coupons相关推荐

  1. UVA - 10288 Coupons(期望的性质)

    题目链接 假设已经收集了kkk个图案,那么拿到一个新图案的概率为n−kn\frac{n-k}{n}nn−k​,根据期望的性质,概率为p的期望会在1/p次后发生,那么答案就是∑i=1nnn−i\sum_ ...

  2. UVa 11762 (期望 DP) Race to 1

    设f(x)表示x转移到1需要的次数的期望,p(x)为不超过x的素数的个数,其中能整除x的有g(x)个 则有(1-g(x)/p(x))的概率下一步还是转移到x,剩下的情况各有1/p(x)的概率转移到x/ ...

  3. UVa 1639 (期望) Candy

    题意: 两个盒子里各有n颗糖,每天有p的概率从第一个盒子里取一颗糖,1-p的概率从第二个盒子里去一颗糖.直到某一天打开某个盒子忽然发现没糖了,求另一个盒子里剩余糖果数的期望. 分析: 紫书上面已经分析 ...

  4. Uva 11600 期望DP

    题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求: 在平均情况下,需要走多少步,使得任意两个城市 ...

  5. uva 12730(期望经典)

    选自: http://blog.csdn.net/myhelperisme/article/details/39724515 用dp(n)表示有n个位置时的期望值,那么,对于一个刚进来的人来说,他有 ...

  6. 红书《题目与解读》第一章 数学 题解《ACM国际大学生程序设计竞赛题目与解读》

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 红书<题目与解读>第一章 数学 题解<ACM国际大学生程序设计竞赛题目与解读> ...

  7. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  8. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  9. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

最新文章

  1. 低价iPhone你买吗? | 每日趣闻
  2. python篮球-基于Python/Java的人工智能篮球训练系统的制作方法
  3. 最简单的基于FFmpeg的移动端例子:IOS 推流器
  4. Codeforces 1025G Company Acquisitions (概率期望)
  5. 2015华为校招机试面试
  6. 玩Java 8 – Lambda,路径和文件
  7. sqoop导出solr数据_Apache Atlas - 强大的元数据管理工具
  8. ivar layout 相关知识点
  9. 在wamp里面配置feehicms
  10. GDAL源码剖析(九)之GDAL体系架构
  11. asp.net控件开发基础二
  12. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
  13. w3c+android,w3cschool官方版app
  14. 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
  15. Vivado IP核fifo使用指南
  16. 解决方案丨智慧写字楼:EasyCVR智能视频平台助力写字楼智慧化运营升级
  17. C语言 实现长整数的相加
  18. 【论文精度】AutoBERT-Zero (使用NAS搜索预训练语言模型)
  19. JS 去除Object中指定的key
  20. 6款程序员常用代码对比工具,你用过几款?

热门文章

  1. Githup高级搜索
  2. java loadjs_Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
  3. 函数或变量 rtenslearn_c 无法识别_深度学习的数学-卷积神经网络的结构和变量关系...
  4. 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
  5. 轮播中小按钮的切换和高亮效果
  6. solr 英文模拟mysql like查询xml_Solr实现类似MySQL的LIKE查询功能
  7. sqlserver还原到mysql_SQLSERVER完整数据库还原(简单恢复模式)
  8. mac macaca android,Mac使用自动化测试macaca踩坑记
  9. android自动路由,GitHub - greatzi/RouterKit: 又一个路由库;Android平台对页面、服务的路由框架。自动化且易用。...
  10. 做python开发要用多大的内存卡_编程用surface怎么样发(学python要多大内存)