博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM学习历程—Hihocoder 1164 随机斐波那契(数学递推)
阅读量:5076 次
发布时间:2019-06-12

本文共 1012 字,大约阅读时间需要 3 分钟。

时间限制:
5000ms
单点时限:
1000ms
内存限制:
256MB

描述

大家对斐波那契数列想必都很熟悉:

a0 = 1, a1 = 1, ai = ai-1 + ai-2,(i > 1)。

现在考虑如下生成的斐波那契数列:

a0 = 1, ai = aj + ak, i > 0, j, k从[0, i-1]的整数中随机选出(j和k独立)。

现在给定n,要求求出E(an),即各种可能的a数列中an的期望值。

输入

一行一个整数n,表示第n项。(1<=n<=500)

输出

一行一个实数,表示答案。你的输出和答案的绝对或者相对误差小于10-6时被视为正确答案。

样例解释

共存在3种可能的数列

1,2,2  1/4

1,2,3  1/2

1,2,4  1/4

所以期望为3。

 

样例输入
2
样例输出
3.000000

 

设f(n)表示an的期望值。

那么

设s(n)表示f(n)前n项的和,那么

当时Hihocoder挑战赛时没高兴推,直接暴力打表过的。

代码:

#include 
#include
#define LL long longusing namespace std;double e[505];LL Sum(int n){ LL ans = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { ans += e[i]+e[j]; } } return ans;}void Init(){ e[0] = 1; double C2; for (int i = 1; i <= 500; ++i) { C2 = i*i; e[i] = Sum(i) / C2; }}int main(){ Init(); int n; while (scanf("%d", &n) != EOF) { printf("%.7lf\n", e[n]); } return 0;}

 

转载于:https://www.cnblogs.com/andyqsmart/p/4509365.html

你可能感兴趣的文章
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
linux设置静态ip
查看>>
C++ 学习笔记 变量和基本类型(一)
查看>>
python-输出颜色显示
查看>>
HDU - 5744 Keep On Movin
查看>>
[MySQL Reference Manual] 20 分区
查看>>
OO第三单元总结
查看>>
Linux编译提速
查看>>