搞笑的代码【长郡NOIP2014模拟10.22】

28 篇文章 0 订阅
4 篇文章 0 订阅
这篇博客讲述了OI比赛中的一个趣味问题,传奇选手QQ用独特方式生成排列数据。问题要求计算生成一个n排列的期望随机次数。样例输入为4,输出为8.333333...。数学期望可通过概率和权值求得,递推公式为F(i)=i/n*(F(i)+1)+(n-i)/n*(F(i-1)+1)。博主提到解法涉及欧拉常数,但并未提供具体代码实现。
摘要由CSDN通过智能技术生成

Description

在OI界存在着一位传奇选手——QQ,他总是以风格迥异的搞笑代码受世人围观
某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据
while 序列长度

Input

一个正整数n,表示需要生成一个n排列

Output

一个数表示期望随机次数,保留整数

Sample Input

4

Sample Output

8(.333333…)
【友情提示】
输出样例的括号里表示答案的小数部分,但实际丌要求输出
数学期望=sigma(概率* 权值),本题中为期望随机次数=sigma(概率 *随机次数)

Data Constraint

30%数据满足n≤3
80%数据满足n≤10^7
100%数据满足n≤2^31


思路

首先容易推出方程式。
定义 Fi 表示序列长度为 i 时的期望随机次数,丌难根据题目的定义列出递推式,
F(i)=i/n* (F(i)+1)+(n-i)/n*(F(i-1)+1),解得 F(i)=F(i-1)+n/(n-i)
所以

Ans=i=1nni=ni=1n1i

n=10^7就80分,所以就打表就好了


解法

说是要什么欧拉常数那个东西,不懂啦。。。。


代码

打表就不给了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值