【题目】

传送门

题目描述:

“……在 200220022002 年 666 月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯。还不赶快行动!”

你关上电视,心想:假设有 nnn 个不同的球星名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?

输入格式:

整数 nnn(222 ≤ nnn ≤ 333333),表示不同球星名字的个数。

输出格式:

输出凑齐所有的名字平均需要买的饮料瓶数。如果是一个整数,则直接输出,否则应该直接按照分数格式输出,例如五又二十分之三应该输出为 53205 \frac{3}{20}5203​,第一行是分数部分的分子,第二行首先是整数部分,然后是由减号组成的分数线,第三行是分母。减号的个数应等于分母的位数。分子和分母的首位都与第一个减号对齐。

分数必须是不可约的。

样例数据:

输入
2

输出
3

【分析】

话说这道题输出好迷啊

首先要有一个结论:假设现在已经收集了 kkk 个球星的名字,那么要使球星的名字达到 k+1k+1k+1,平均需要买 nn−k\frac{n}{n-k}n−kn​ 瓶饮料

感性理解一下吧(反正我也不会证),现在已经有 kkk 个球星的名字,下一次买饮料买到新的球星名字的概率就是 n−kn\frac{n-k}{n}nn−k​,那平均买 nn−k\frac{n}{n-k}n−kn​ 次就可以买到新的了

那么答案就很好算了,就是 n1+n2+...+nn\frac{n}{1}+\frac{n}{2}+...+\frac{n}{n}1n​+2n​+...+nn​(提一个 nnn 就是调和级数了)

由于数据规模并不大,所以直接开 longlonglong longlonglong 进行计算就可以了,还要注意边求和边约分

再次吐槽一下输出,太鬼畜了。。。

【代码】

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long lcm(long long x,long long y)  {return x*y/__gcd(x,y);}
void calc(long long &mol,long long &den,long long x,long long y)
{long long l=lcm(den,y);mol*=l/den,x*=l/y;mol+=x,den=l;long long g=__gcd(mol,den);mol/=g,den/=g;
}
int len(long long x)
{int ans=0;while(x!=0)  ans++,x/=10;return ans;
}
int main()
{int n,i;scanf("%d",&n);long long mol=n,den=1;for(i=2;i<=n;++i)calc(mol,den,n,i);if(mol%den==0)  printf("%lld",mol);else{int num1=len(den);int num2=len(mol/den);for(i=1;i<=num2;++i)  printf(" ");printf("%lld\n%lld",mol%den,mol/den);for(i=1;i<=num1;++i)  printf("-");printf("\n");for(i=1;i<=num2;++i)  printf(" ");printf("%lld",den);}return 0;
}

【SHOI 2002】百事世界杯之旅相关推荐

  1. SHOI 2002 百事世界杯之旅 题解

    题目传送门 题目大意: 有 nnn 种物品,每次随机拿一种,问期望拿几次能拿齐所有种类. 题解 跟这题一样的,甚至还要简单一些qwq,就是多了个分数. 代码如下: #include <cstdi ...

  2. 【SHOI 2002】百事世界杯之旅 (BSOI4841)

    [SHOI 2002]百事世界杯之旅 Description --在2003年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可以参加百事世界杯之旅的抽奖活动 ...

  3. [SHOI2002]百事世界杯之旅

    题目:"--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯. ...

  4. P1291 SHOI2002 百事世界杯之旅

    题目:百事世界杯之旅 思路: 即求n∗(1+12+13+...+1n)n∗(1+12+13+...+1n)n*(1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}),注 ...

  5. P1291 [SHOI2002]百事世界杯之旅

    传送门 期望DP 设 f [ i ] 表示还有 i 个名字没得到,集齐所有名字的期望购买次数 考虑一次购买的影响: 如果得到以前没有的名字 f [ i-1 ]  ->  f [ i ],如果得到 ...

  6. SHOI2002 百事世界杯之旅

    题目链接:戳我 看到期望,想着不要从前转移. 一次后能买到不同种类的概率为\(\frac{n-i}{n}\) 两次后能买到不同种类的概率为\(\frac{i}{n}\times \frac{n-i}{ ...

  7. 知情人士称百事与广药集团谈判 密购王老吉

    知情人士称,百事在与广药集团谈判,具体合作方式待定 百事可乐终于坐不住了. 近日,本报记者独家获悉,百事可乐正和广州王老吉药业股份有限公司(下称广药王老吉)的拥有者广州医药集团有限公司(下称广药集团) ...

  8. 霍尼韦尔、斯凯孚、富士胶片、蔡司、百事、洲际、万豪等外企在中国 | 美通社头条...

    美通社消息:霍尼韦尔.斯凯孚.富士胶片.蔡司.百事公司.索迪斯.洲际酒店集团.万豪集团.大食代.乐高.万代魂TAMASHII NATIONS.ETRO等跨国企业在中国最新资讯. 霍尼韦尔 霍尼韦尔迎来 ...

  9. 智能车竞赛技术报告 | 智能车视觉 - 石家庄学院 - 百事

    简 介: 本文以第十六届全国大学生智能汽车竞赛为背景介绍了智能赛车控制系统的软硬件结构和开发流程. 本文设计的智能车系统以MIMXRT1064 芯片作为系统的控制核心,进行信号采样. 数据处理运算,通 ...

最新文章

  1. es Update API
  2. dede自定义表单html,织梦自定义表单制作在线订单详细解说
  3. 在Fedora上搭建GTK+的开发环境
  4. Android TV开发总结【焦点】
  5. cad通过钢筋大样生成钢筋明细表插件_为什么自动生成的钢筋明细表为空 - 应用技巧 - 常青藤软件工作室...
  6. 小米手机+MIUI系统开发版线刷到稳定版(小米8+MIUI10)
  7. 打印纸张尺寸换算_电脑打印纸规格全记录
  8. Baklib知识库-企业知识库管理平台
  9. 不动点求数列通项原理_【数列】浅谈“不动点”求数列通项的方法
  10. 2021年芒种是几月几号?芒种如何养生?
  11. 读书笔记:《狼图腾》
  12. C语言定时器触发回调函数
  13. 分享怎么才能防止域名被劫持
  14. C10K Problem
  15. 我的第一个JDBC小项目
  16. 【培训】渔网模式识别项目-算法培训-王博士
  17. Vue开发中实用的文件下载(仅包括视频下载和图片下载)
  18. HUOJ-10857 最大的面积 凸包+DP
  19. [siggraph2011]Secrets of CryENGINE 3 Graphics Technology
  20. 净利润同比增长54%,阿里巴巴下沉市场称王?

热门文章

  1. 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
  2. 采用直线逼近方式的圆弧插补
  3. htmltestrunner解决错误日志出界问题
  4. linux 中read命令后面-p是什么意思呢
  5. CMN_1022: [FreeTDS][SQL Server]The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION
  6. React源码分析(二)= Reac初次渲染分析
  7. UnityShader水墨渲染的尝试
  8. python中list函数例题_python 练习题(三)
  9. 《以道御术》荣耀上市,专家书评
  10. OceanBase迷你版集群安装记录