[SHOI2002]百事世界杯之旅
题目:“……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯。还不赶快行动!”
你关上电视,心想:假设有n个不同的球星名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?
输入\(n(2\le n\le33)\),以带分数or整数的形式输出购买的期望数。
令\(f[i]\)代表集齐\(i\)个明星需要的瓶盖数量。我们很容易得到
\(\displaystyle f[i]=\frac{i-1}{n}f[i]+\frac{n-i+1}{n}f[i-1]+1\)
然后这个式子不清真,因为\(f[i]\)的递推式里有\(f[i]\)递推个蛋啊,所以对\(f[i]\)移项
\(\displaystyle \frac{n-i+1}{n}f[i]=\frac{n-i+1}{n}f[i-1]+1\)
然后再搞搞
\(\displaystyle f[i]=f[i-1]+\frac{n}{n-i+1}\)
行了,这是一个递推式的形式,完美。。。。。
所以\(\displaystyle f[n]=\sum_{i=1}^n\frac{n}{n-i+1}=\sum_{i=1}^n\frac{n}{i}\)
行了,这就完美了。。。
然后呢我们就给他加加加哎哎哎家家爱阿基爱家啊啊
自己写一个分数的结构体捣鼓就行了
最后输出的时候,为了安全我多写了点,如代码:
如果这个代码没有成功地高亮显示,说明你在浏览某LJ网站,请自觉的点我。拒绝lj网站从我做起
#include <bits/stdc++.h>
using namespace std;
#define int long long
int getlen(long long x, bool mode)
{
if(mode == 1 && x == 0)
return 1;
int ans = 0;
while (x > 0)
{
ans++;
x/= 10;
}
return ans;
}
struct fraction
{
long long son, mother;
fraction(int son = 0, int mother = 1) : son(son), mother(mother){}
void redution(){int g = __gcd(mother, son);mother /= g;son /= g;}
void print()
{
redution();
long long div = son / mother;
long long rest = son % mother;
if (rest == 0)
{
printf("%lld\n", div);
return;
}
int len = getlen(div, 0);
int len1 = getlen(rest, 1);
int len2 = getlen(mother, 1);
int len3 = max(len1, len2);
for (int i = 1; i <= len; i++)
putchar(' ');
printf("%lld\n", rest);
if (div > 0)
printf("%lld", div);
for (int i = 1; i <= len3; i++)
putchar('-');
printf("\n");
for (int i = 1; i <= len; i++)
putchar(' ');
printf("%lld\n", mother);
}
};
fraction operator+(const fraction &a, const fraction &b)
{
fraction ans(a.son * b.mother + a.mother * b.son, a.mother * b.mother);
ans.redution();
return ans;
}
signed main()
{
int n;
scanf("%lld", &n);
fraction ans;
for (int i = 1; i <= n; i++)
{
fraction tmp(n, i);
ans = ans + tmp;
}
ans.print();
return 0;
}
[SHOI2002]百事世界杯之旅的更多相关文章
- COGS 1224. [SHOI2002]百事世界杯之旅(期望概率)
COGS 1224. [SHOI2002]百事世界杯之旅 ★ 输入文件:pepsi.in 输出文件:pepsi.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] ...
- P1291 [SHOI2002]百事世界杯之旅(概率)
P1291 [SHOI2002]百事世界杯之旅 设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数 则有: $f(n,k)=\frac{n-k}{n}*f(n,k) + \ ...
- 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告
P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...
- luogu P1291 [SHOI2002]百事世界杯之旅
题目链接 luogu P1291 [SHOI2002]百事世界杯之旅 题解 设\(f[k]\)表示还有\(k\)个球员没有收集到的概率 再买一瓶,买到的概率是\(k/n\),买不到的概率是\((n-k ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅 [数学期望]
题目传送门 百事世界杯之旅 题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听, ...
- P1291 [SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅(期望DP)
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- [Luogu1291][SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- ●洛谷P1291 [SHOI2002]百事世界杯之旅
题链: https://www.luogu.org/recordnew/show/5861351题解: dp,期望 定义dp[i]表示还剩下i个盖子没收集时,期望还需要多少次才能手机完. 初始值:dp ...
随机推荐
- List转Datable(需区分对象充当List成员和数组充当List成员两种情况)
对象充当List成员时: /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name ...
- C#一般处理程序 ashx.cs使用Session报错问题
HttpContext.Current.Session["UserID"].ToString();//报错,报Session为Null, 此时需要添加引用和继承IRequiresS ...
- 类型:。net;问题:HQL;结果:HQL: Hibernate查询语言
HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可 ...
- 问题:Custom tool error: Failed to generate code for the service reference 'AppVot;结果:添加Service Reference, 无法为服务生成代码错误的解决办法
添加Service Reference, 无法为服务生成代码错误的解决办法 我的解决方案是Silverlight+WCF的应用,Done Cretiria定义了需要在做完Service端的代码后首先运 ...
- myeclipse10启动service窗口报异常
1:找到与之对应的tomcat: 2:删掉“.metadata/.plugins/org.eclipse.core.runtime/.settings/ com.genuitec.eclipse.as ...
- DAY7-面向对象之多态与多态性
一.多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abs ...
- eclipse自动生成带参数说明方法注释
自动生成方法的注释格式,例如 /*** @param str* @return * @throws ParseException*/ 快捷键是alt+shift+j,将光标放在方法名上,按快捷键.会 ...
- Python之整数,浮点数和布尔类型
整数和浮点数有那个四则运算: 两种类型的数可以直接进行加减,当整数和浮点数进行加减的时候,结果会自动的变为浮点数,其中除法运算是“/”来表示的, 而余数的算术符号是“%”来表示的.如果是为了求除完后的 ...
- 框架之 hibernate之各种查询
1. Hibernate的查询方式 2. Hibernate的查询策略 案例:使用Hibernate完成查询所有联系人功能 需求分析 1. 完成所有的联系人的查询 技术分析之Hibernate框架的查 ...
- DesertWind TopCoder - 1570
传送门 分析 首先我们要知道为了情况最坏,无论你到哪,一定会在你前往绿洲的最短路上的那片沙子上刮风,所以这个点到绿洲的最短路即为他相连的点中到绿洲距离最短的距离+3和次短的距离+1的最小值,具体实现见 ...