LightOJ1234 Harmonic Number 调和级数求和
【题目】
【预备知识】
,其中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 调和级数求和相关推荐
- LightOJ1234 Harmonic Number
1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...
- Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)
题意:求f(n)=1/1+1/2+1/3+1/4-1/n (1 ≤ n ≤ 108).,精确到10-8 (原题在文末) 知识点:调和级数(即f(n))至今没有一个完全正确的公式,但欧拉给出过一个近似公 ...
- 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),数据范围太大,如果我们按 照题目中的代 ...
- LightOJ1245 Harmonic Number (II) —— 规律
题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II) PDF (English) Statistic ...
- 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} ...
- Harmonic Number 调和级数
今天做了一道关于调和级数的题目,之前接触有关级数的"神马"还是在高数上,当时只是研究了调和级数的发散还是收敛等关系,10^8那么大的数据正常跑肯定会超时不是,一直都不知道对于这个伟 ...
- 【调和级数求和公式】【欧拉常数】I - Harmonic Number
题意: 求1+1/2+1/3+-+1/n 欧拉常数值:C≈0.57721566490153286060651209 求和公式:S(n)=ln(n)+C+1/(2*n) 公式只对n值很大的数有效 ( C ...
- matlab调和级数求和,科学网—疯狂的绝技------级数加速收敛的艺术 - 张江敏的博文...
很多时候,我们需要计算一个无穷级数之和.比如,历史上著名的Basel问题是要计算级数 之和.这个问题之所以叫巴塞尔问题,是因为来自巴塞尔的约翰-伯努利和雅克比-伯努利为之苦恼了很久,尔后解决之的数学家 ...
- 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/ ...
最新文章
- PHP基础-自定义函数-变量范围-函数参数传递
- Java开发知识之Java中的集合上List接口以及子类讲解.
- SharePoint 部署解决方案Feature ID冲突
- 解决cc1plus.exe: out of memory allocating bytes
- Linux内核线程kernel thread详解--Linux进程的管理与调度
- 关于更改当前公司(一)--ChangeCompany
- local tomcat 找不到springmvc里的包_唰唰的手撕一个简单的Spring Mvc 框架
- 传京东最快6月将在香港二次上市 已以保密形式提交上市申请
- bash:pip:找不到命令
- eclipse配置xml的自动提示
- java 新增的方法外部调用提示不存在_Java面试简答题(一)
- VM VirtualBox安装mac os dmg 转 iso
- 一寸照纯红色底图片_纯红色背景
- win7 php7.1,win7下php7.1运行getenv('REMOTE_ADDR')fastcgi停止运行-Go语言中文社区
- 基于Zynq的光流法软硬件协同实现
- 变换AABB的快速算法
- 数字证书基本知识总结
- Python爬取猫眼电影榜单评分,以及评论
- php留言板的简单编写
- 登出(logout.jsp) - Cookie清除无效问题
热门文章
- 一图看清全球270家典型区块链服务商
- 吴志强院士:CIM与城市未来
- 重磅!脑机接口突破登Nature封面,脑中“笔迹”转屏幕文字破纪录,准确率超99%...
- 《科学》封面特别报道:人类登月50年
- 量子计算何时具有真正的商业价值?
- 重磅 | 中国工程院提出新一代智能制造
- AI、区块链和机器人:技术会让未来的工作发生什变化?
- 零售业将成人工智能系统支出额最高的行业
- HarmonyOS 手机应用开发者 Beta 版到来,对开发者意味着什么
- 开发人员MySQL调优-实战篇2-让SQL使用索引详解