题意:求f(n)=1/1+1/2+1/3+1/4…1/n(1≤n≤108)精确到10−8f(n)=1/1+1/2+1/3+1/4…1/n (1 ≤ n ≤ 10^8)精确到10^{-8}f(n)=1/1+1/2+1/3+1/4…1/n(1≤n≤108)精确到10−8


解法1:

调和级数到现在还没有完全正确的公式,但是有个近似的公式:f(n)=ln(n)+C+1/(2∗n)f(n)=ln(n)+C+1/(2*n)f(n)=ln(n)+C+1/(2∗n)n越大越精准,c是欧拉常数


那么我们在n小的时候暴力求,当n很大的时候直接带公式


#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double r=0.57721566490153286060651209;     //欧拉常数
double a[10000];int main()
{a[1]=1;for (int i=2;i<10000;i++){a[i]=a[i-1]+1.0/i;}int n;cin>>n;for (int kase=1;kase<=n;kase++){int n;cin>>n;if (n<10000){printf("Case %d: %.10lf\n",kase,a[n]);}else{double a=log(n)+r+1.0/(2*n);//double a=log(n+1)+r;printf("Case %d: %.10lf\n",kase,a);}}return 0;
}

解法2:


如果1e8全都记录一定会MLE,我们可以每40个数记录一个数据:分别记录1/40,1/80,1/120...1/1081/40,1/80,1/120...1/10^81/40,1/80,1/120...1/108


#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>using namespace std;const int maxn = 2500001;
double a[maxn] = {0.0, 1.0};int main()
{int t, n, ca = 1;double s = 1.0;for(int i = 2; i < 100000001; i++){s += (1.0 / i);if(i % 40 == 0) a[i/40] = s;}scanf("%d", &t);while(t--){scanf("%d", &n);int x = n / 40;s = a[x];for(int i = 40 * x + 1; i <= n; i++) s += (1.0 / i);printf("Case %d: %.10lf\n", ca++, s);}return 0;
}

Harmonic Number(调和级数+欧拉常数)相关推荐

  1. Harmonic Number 调和级数

    今天做了一道关于调和级数的题目,之前接触有关级数的"神马"还是在高数上,当时只是研究了调和级数的发散还是收敛等关系,10^8那么大的数据正常跑肯定会超时不是,一直都不知道对于这个伟 ...

  2. Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)

    题意:求f(n)=1/1+1/2+1/3+1/4-1/n (1 ≤ n ≤ 108).,精确到10-8 (原题在文末) 知识点:调和级数(即f(n))至今没有一个完全正确的公式,但欧拉给出过一个近似公 ...

  3. Harmonic Number LightOJ - 1234(暴力分段打表 / 欧拉爷爷的O(1))

    Harmonic Number LightOJ - 1234 题意: 给你一个调和级数. f(n)=1+12+13+14+15+...+1nf(n)=1+\frac{1}{2}+\frac{1}{3} ...

  4. Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)

    题意:让我们求f(n)=n/1+n/2+n/3+......+n/n:同时注意n/i取整: 思路:首先我们先看数据的范围,n (1 ≤ n < 2 31),数据范围太大,如果我们按 照题目中的代 ...

  5. LightOJ1234 Harmonic Number

    1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...

  6. LightOJ1245 Harmonic Number (II) —— 规律

    题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II)     PDF (English) Statistic ...

  7. LightOJ 1234 Harmonic Number(调和级数+欧拉常数)

    题目链接:https://cn.vjudge.net/contest/318269#problem/F Sample Input 12 1 2 3 4 5 6 7 8 9 90000000 99999 ...

  8. 【调和级数求和公式】【欧拉常数】I - Harmonic Number

    题意: 求1+1/2+1/3+-+1/n 欧拉常数值:C≈0.57721566490153286060651209 求和公式:S(n)=ln(n)+C+1/(2*n) 公式只对n值很大的数有效 ( C ...

  9. LightOJ1234 Harmonic Number 调和级数求和

    [题目] [预备知识] ,其中r是欧拉常数,const double r= 0.57721566490153286060651209; 这个等式在n很大 的时候 比较精确. [解法]可以在 n较小的时 ...

最新文章

  1. 天软考c语言,软考中C语言试题问答精选
  2. 电子工程可以报考二建_毕业证上财务管理专业,可以报考二建吗?
  3. 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
  4. 使用Docker搭建Consul集群
  5. 数据结构 红黑树(RBTree)的原理与实现
  6. Java多线程系列---“JUC原子类”02之 框架
  7. oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
  8. MyCat分片规则之ASCII码取模范围分片
  9. linux命令行添加管理员用户,Linux基础命令---添加用户useradd
  10. 【黑马程序员西安中心】一个内向青年的转变
  11. Python-day17
  12. M3U8视频解密下载
  13. App推广统计代替渠道包统计的方法
  14. pg_partman
  15. 利用OpenCV实现图像矫正
  16. 确保软件开发生命周期(SDLC)的安全
  17. 高通和LG携手于2018年开始测试5G车辆互联网;Google 宣布攻破 SHA-1 加密│IoT黑板报...
  18. .NET Remoting 最简单示例
  19. 13、断开蓝牙设备连接(closeBLEConnection)
  20. 使用ExpandableListView中的一些边边角角

热门文章

  1. MySQL数据库左连接查询left join ... on
  2. 基于Python利用OpenCV实现Hough变换的形状检测
  3. 如何量化医学图像分割中的置信度?
  4. 墙裂建议收藏,100道Python练手题目
  5. 【OpenCV 4开发详解】颜色模型与转换
  6. 链表问题12——将单链表的每K个节点之间逆序(方法二)
  7. 邮件服务器 之 基于FreeBSD和Postfix的邮件系统与邮件列表的web mail安装
  8. 统一沟通-技巧-10-Lync-公网证书-Go Daddy
  9. PHP CURL方法,GETPOST请求。
  10. koa-grace:一个基于koa的node多应用MVC框架