LightOJ1234 Harmonic Number
1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1234 4 打表 分块 5 由于只有加法运算,1e8时间是可以承受的。 6 然而空间无法承受,于是以50个单位为一块进行分块。 7 */ 8 #include <cstdio> 9 #include <algorithm> 10 #include <cstring> 11 #include <cmath> 12 #include <vector> 13 #include <queue> 14 #include <iostream> 15 #include <map> 16 #include <set> 17 //#define test 18 using namespace std; 19 #ifdef old 20 const int Nmax=1e6+7; 21 double f[Nmax]; 22 #endif 23 const int Nmax=1e8+5; 24 const double eps=1e-9; 25 double f[Nmax/50+5]; 26 //double get_f(int n) 27 //{ 28 //if(n<Nmax) 29 //return f[n]; 30 //return 1.0/n+get_f(n-1); 31 //} 32 #ifdef old 33 map<int ,double> mp; 34 map<int ,double>::iterator it; 35 double get_f(int n) 36 { 37 if(n<Nmax) 38 return f[n]; 39 it=mp.find(n); 40 if(it!=mp.end()) 41 return mp[n]; 42 it=mp.upper_bound(n); 43 if(it!=mp.begin()) 44 it--; 45 //printf("it->n:%d\n,it->first); 46 double ans=it->second; 47 for(int i=it->first+1;i<=n;i++) 48 { 49 ans+=1.0/i; 50 } 51 mp[n]=ans; 52 return ans; 53 } 54 #endif 55 int main() 56 { 57 #ifdef test 58 #endif 59 //freopen("loj1234.in","r",stdin); 60 //freopen("tras.out","w",stdout); 61 #ifdef old 62 f[1]=1.0; 63 for(int i=2;i<Nmax;i++) 64 f[i]=f[i-1]+1.0/i; 65 #endif 66 //for(int i=1;i<=15;i++) 67 //printf("%lf\n",f[i]); 68 #ifdef old 69 mp[Nmax-1]=f[Nmax-1]; 70 #endif 71 double tmp=0.0; 72 for(int i=1;i<=1e8;i++) 73 { 74 tmp+=1.0/i; 75 if(i%50==0) 76 f[i/50]=tmp; 77 } 78 int n; 79 int t; 80 scanf("%d",&t); 81 t=0; 82 while(scanf("%d",&n)==1) 83 { 84 t++; 85 printf("Case %d: ",t); 86 double ans=0.0; 87 ans=f[n/50]; 88 for(int i=n/50*50+1;i<=n;i++) 89 ans+=1.0/i; 90 printf("%.8lf\n",ans+eps); 91 #ifdef old 92 printf("%.8lf\n",get_f(n)+eps); 93 #endif 94 95 } 96 return 0; 97 }
转载于:https://www.cnblogs.com/BBBob/p/6705620.html
LightOJ1234 Harmonic Number相关推荐
- LightOJ1234 Harmonic Number 调和级数求和
[题目] [预备知识] ,其中r是欧拉常数,const double r= 0.57721566490153286060651209; 这个等式在n很大 的时候 比较精确. [解法]可以在 n较小的时 ...
- 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那么大的数据正常跑肯定会超时不是,一直都不知道对于这个伟 ...
- 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/ ...
- LightOJ - 1245 Harmonic Number (II) 求同值区间的和
题目大意:对下列代码进行优化 long long H( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) ...
- light oj -1245 - Harmonic Number (II)
先举个例子,假如给你的数是100的话,将100/2=50;是不是就是100除100-51之间的数取整为1: 100/3=33;100除50到34之间的数为2,那么这样下去到sqrt(100);就可以求 ...
最新文章
- H5多媒体(用面向对象的方法控制视频、音频播放、暂停、延时暂停)
- 综合技术--maven的基本使用
- 1008 N的阶乘 mod P ——51Nod(同余定理)
- Ubuntu 16.04.6 LTS 发布:紧急修复 APT 漏洞
- lucene教程--全文检索技术详解
- web前端怎么获取cookie?新手前端开发者需了解
- 算法竞赛进阶指南--快速幂,求a^b mod p
- Cloud一分钟 | 谷歌退出美国防部云计算竞标;网络黑灰产业已近千亿,个人信息泄露是源头...
- android 系统(143)---Android实现App版本自动更新
- skyline 环境配置
- 仿美团外卖小程序源码
- win7系统关闭445端口
- 吉他入门教程之吉他音阶训练——练习方法
- Linux第二课 文件系统目录结构
- html文件变成桌面背景,将HTML文档设置为Windows桌面背景(转)
- 无线 WiFi 流量劫持
- exit status 145: The directory is not empty,exit status 5: �ܾ����ʡ� ,nvm切换node版本问题汇总
- python中英文古风排版_2017年天梯赛部分真题加Pat部分题目(1)
- LabVIEW范例无法打开解决办法
- Linux安装FTP服务(Pure-FTPd)
热门文章
- 算法设计方法之 贪婪算法
- Git commit至Gitee报错‘remote: error: hook declined to update refs/heads/master‘的解决方法
- sql linux 160天,Ubuntu下用脚本执行sql语句(sqlite)
- gtihub第二次上传项目_国道岱山项目双合大桥墩柱桩基打桩施工突破100根
- adb指令通过uid控制_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...
- 遍历集合的两种方式:迭代器和增强型for循环
- python matplotlib绘图显示中文
- albert使用的中文语料
- 美国知名DJ 3LAU以1160万美元出售全球首套音乐专辑NFT藏品
- Filecoin Gas基础费率降至4.67 nanoFIL