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+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(调和级数+欧拉常数)相关推荐
- Harmonic Number 调和级数
今天做了一道关于调和级数的题目,之前接触有关级数的"神马"还是在高数上,当时只是研究了调和级数的发散还是收敛等关系,10^8那么大的数据正常跑肯定会超时不是,一直都不知道对于这个伟 ...
- 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 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 (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),数据范围太大,如果我们按 照题目中的代 ...
- LightOJ1234 Harmonic Number
1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...
- LightOJ1245 Harmonic Number (II) —— 规律
题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II) PDF (English) Statistic ...
- 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 ...
- 【调和级数求和公式】【欧拉常数】I - Harmonic Number
题意: 求1+1/2+1/3+-+1/n 欧拉常数值:C≈0.57721566490153286060651209 求和公式:S(n)=ln(n)+C+1/(2*n) 公式只对n值很大的数有效 ( C ...
- LightOJ1234 Harmonic Number 调和级数求和
[题目] [预备知识] ,其中r是欧拉常数,const double r= 0.57721566490153286060651209; 这个等式在n很大 的时候 比较精确. [解法]可以在 n较小的时 ...
最新文章
- 天软考c语言,软考中C语言试题问答精选
- 电子工程可以报考二建_毕业证上财务管理专业,可以报考二建吗?
- 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
- 使用Docker搭建Consul集群
- 数据结构 红黑树(RBTree)的原理与实现
- Java多线程系列---“JUC原子类”02之 框架
- oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
- MyCat分片规则之ASCII码取模范围分片
- linux命令行添加管理员用户,Linux基础命令---添加用户useradd
- 【黑马程序员西安中心】一个内向青年的转变
- Python-day17
- M3U8视频解密下载
- App推广统计代替渠道包统计的方法
- pg_partman
- 利用OpenCV实现图像矫正
- 确保软件开发生命周期(SDLC)的安全
- 高通和LG携手于2018年开始测试5G车辆互联网;Google 宣布攻破 SHA-1 加密│IoT黑板报...
- .NET Remoting 最简单示例
- 13、断开蓝牙设备连接(closeBLEConnection)
- 使用ExpandableListView中的一些边边角角
热门文章
- MySQL数据库左连接查询left join ... on
- 基于Python利用OpenCV实现Hough变换的形状检测
- 如何量化医学图像分割中的置信度?
- 墙裂建议收藏,100道Python练手题目
- 【OpenCV 4开发详解】颜色模型与转换
- 链表问题12——将单链表的每K个节点之间逆序(方法二)
- 邮件服务器 之 基于FreeBSD和Postfix的邮件系统与邮件列表的web mail安装
- 统一沟通-技巧-10-Lync-公网证书-Go Daddy
- PHP CURL方法,GETPOST请求。
- koa-grace:一个基于koa的node多应用MVC框架