题目大意:
$$
f_n=
\begin{cases}
\frac{\sum\limits_{i=1}^nf_i}n+1&(n>1)\\
0&(n=1)
\end{cases}
$$
求$f_n(n<2^{31})$

题解:考虑$n>2$时的情况。

$$
f_n=\dfrac{\sum\limits_{i=1}^nf_i}n+1\\
nf_n=\sum\limits_{i=1}^{n-1}f_i+f_n+n\\
\begin{align}
(n-1)f_n=\sum\limits_{i=1}^{n-1}f_i+n\\
(n-2)f_{n-1}=\sum\limits_{i=1}^{n-2}f_i+n-1\\
\end{align}\\
(1)-(2),得:\\
(n-1)f_n-(n-2)f_{n-1}=\sum\limits_{i=1}^{n-1}f_i+n-(\sum\limits_{i=1}^{n-2}f_i+n-1)\\
(n-1)(f_n-f_{n-1})=1\\
f_n-f_{n-1}=\dfrac1{n-1}
$$

特别的,当$n=2$时,$f_{n-1}$无法用原来的公式来计算,所以$f_n-f_{n-1}$要特别计算,为$2$

当$n>1$时
$$
\begin{align*}
ans&=2+\sum\limits_{i=2}^{n-1}\dfrac1i\\
&=1+\sum\limits_{i=1}^{n-1}\dfrac1i
\end{align*}
$$
但是$n<2^{31}$,无法$O(n)$计算,但是右边的东西(调和级数$H(x)$)在$n$较大时有一个公式:$H_n=\ln(n)+\gamma$。($\gamma$的定义就是$\gamma=\lim\limits_{n\to\infty}H_n-\ln(n)$,$\gamma=0.57721566490153286060651209008240243104215933593992\dots$)

卡点:

C++ Code:

#include <cstdio>
#include <cmath>
const int limit = 1000000;
const long double EulerGamma = 0.577215664901532860606512090082; int n;
long double ans = 1;
int main() {
scanf("%d", &n);
if (n == 1) {
puts("0.00000");
return 0;
}
if (n <= limit) for (int i = 1; i < n; ++i) ans += 1 / static_cast<long double> (i);
else ans += logl(n - 1) + EulerGamma;
printf("%.5Lf\n", ans);
return 0;
}

  

最新文章

  1. WebSocket 学习(三)--用nodejs搭建服务器
  2. Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)
  3. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识
  4. .NET中数据集的强类型化
  5. SparkSQLTest.scala
  6. 让Eclipse使用新版本的JRE
  7. Android FastJson解析
  8. POJ 3450 Corporate Identity(KMP)
  9. SpringBoot上传任意文件功能的实现
  10. Java多线程窥探
  11. 剑指Offer-不用加减乘除做加法
  12. CodeForces - 314C Sereja and Subsequences (树状数组+dp)
  13. POJ 1017 最少包裹
  14. 使用android-ndk官方ndkbuild例子
  15. python基础(11)-常用模块
  16. springMVC学习 十二 拦截器
  17. IOS xib和代码自定义UIView
  18. (转)用graph-easy描绘kubenetes描绘k8s组件逻辑图
  19. UML类关系:依赖、关联、聚合、组合
  20. docker入门——构建镜像

热门文章

  1. centos7.4 防火墙设置
  2. sqlserver安装遇到的问题——1
  3. Windows 实例搭建的 FTP 在外网无法连接和访问
  4. 【MYSQL用户创建报错】ERROR 1396 (HY000): Operation CREATE USER failed for &#39;user1&#39;@&#39;%&#39;
  5. 关于Python的装饰器(1)
  6. lua 中的 loadfile、dofile和require的调用
  7. 记录阿里云ECS(Centos7.4)安装mysql 8.0.X服务
  8. 在jre1.8版本下,使用ikvm将jar转换为dll,以供c#调用
  9. JS - Promise使用详解--摘抄笔记
  10. Scrum立会报告+燃尽图(十一月十七日总第二十五次):设计调查问卷;修复上一阶段bug