【题目】

【预备知识】

,其中r是欧拉常数,const double r= 0.57721566490153286060651209;

这个等式在n很大 的时候 比较精确。

【解法】可以在 n较小的时候,比如n<1e6时,直接用预处理的打表O(1)求值,在n比较 大的时候,运用以上公式,此时要减去 1/(2*n)加以修正。

#include<iostream>
#include<cmath>
using namespace std;
const double euler= 0.57721566490153286060651209;
const int maxn = 1e6;
double a[maxn];
int cas = 1;
int main(){long long n;a[1] = 1;for(int i=2; i<maxn; i++){a[i] = a[i-1] + 1.0 / i;}int t;cin>>t;while(t--){cin>>n;if(n < maxn){printf("Case %d: %.10lf\n",cas++,a[n]);continue;}double ans = log(1+n) + euler - 1.0/(2*n);printf("Case %d: %.10lf\n",cas++,ans);}return 0;
} 

【分块打表】

虽然1e8的表打不出来,但1e6的表很好打,所以每隔100个数记录一次前缀和。到时用的时候,O(1)取出最接近n的前缀和,余下不足100个数暴力 求和即可。

#include<iostream>
#include<cmath>
using namespace std;
const double euler= 0.57721566490153286060651209;
const int maxn = 1e8+100;double a[maxn/100];
int count = 1;int cas = 1;
int main(){long long n;a[0] = 0;double s = 0;for(int i=1; i<maxn; i++){s += 1.0/i;if( i % 100 == 0){a[count++] = s;}}int t;cin>>t;while(t--){double ans = 0;cin>>n;int num = n / 100;//对应a[num]ans += a[num];for(long long i=num * 100 + 1; i<=n; i++){ans += 1.0/i;} printf("Case %d: %.10lf\n", cas++, ans);}return 0;
} 

转载于:https://www.cnblogs.com/czsharecode/p/9786135.html

LightOJ1234 Harmonic Number 调和级数求和相关推荐

  1. LightOJ1234 Harmonic Number

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

  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 (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),数据范围太大,如果我们按 照题目中的代 ...

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

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

  5. 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} ...

  6. Harmonic Number 调和级数

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

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

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

  8. matlab调和级数求和,科学网—疯狂的绝技------级数加速收敛的艺术 - 张江敏的博文...

    很多时候,我们需要计算一个无穷级数之和.比如,历史上著名的Basel问题是要计算级数 之和.这个问题之所以叫巴塞尔问题,是因为来自巴塞尔的约翰-伯努利和雅克比-伯努利为之苦恼了很久,尔后解决之的数学家 ...

  9. Harmonic Number(调和级数+欧拉常数)

    题意:求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. PHP基础-自定义函数-变量范围-函数参数传递
  2. Java开发知识之Java中的集合上List接口以及子类讲解.
  3. SharePoint 部署解决方案Feature ID冲突
  4. 解决cc1plus.exe: out of memory allocating bytes
  5. Linux内核线程kernel thread详解--Linux进程的管理与调度
  6. 关于更改当前公司(一)--ChangeCompany
  7. local tomcat 找不到springmvc里的包_唰唰的手撕一个简单的Spring Mvc 框架
  8. 传京东最快6月将在香港二次上市 已以保密形式提交上市申请
  9. bash:pip:找不到命令
  10. eclipse配置xml的自动提示
  11. java 新增的方法外部调用提示不存在_Java面试简答题(一)
  12. VM VirtualBox安装mac os dmg 转 iso
  13. 一寸照纯红色底图片_纯红色背景
  14. win7 php7.1,win7下php7.1运行getenv('REMOTE_ADDR')fastcgi停止运行-Go语言中文社区
  15. 基于Zynq的光流法软硬件协同实现
  16. 变换AABB的快速算法
  17. 数字证书基本知识总结
  18. Python爬取猫眼电影榜单评分,以及评论
  19. php留言板的简单编写
  20. 登出(logout.jsp) - Cookie清除无效问题

热门文章

  1. 一图看清全球270家典型区块链服务商
  2. 吴志强院士:CIM与城市未来
  3. 重磅!脑机接口突破登Nature封面,脑中“笔迹”转屏幕文字破纪录,准确率超99%...
  4. 《科学》封面特别报道:人类登月50年
  5. 量子计算何时具有真正的商业价值?
  6. 重磅 | 中国工程院提出新一代智能制造
  7. AI、区块链和机器人:技术会让未来的工作发生什变化?
  8. 零售业将成人工智能系统支出额最高的行业
  9. HarmonyOS 手机应用开发者 Beta 版到来,对开发者意味着什么
  10. 开发人员MySQL调优-实战篇2-让SQL使用索引详解