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相关推荐

  1. LightOJ1234 Harmonic Number 调和级数求和

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

  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. 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/ ...

  8. LightOJ - 1245 Harmonic Number (II) 求同值区间的和

    题目大意:对下列代码进行优化 long long H( int n ) {     long long res = 0;     for( int i = 1; i <= n; i++ )   ...

  9. light oj -1245 - Harmonic Number (II)

    先举个例子,假如给你的数是100的话,将100/2=50;是不是就是100除100-51之间的数取整为1: 100/3=33;100除50到34之间的数为2,那么这样下去到sqrt(100);就可以求 ...

最新文章

  1. H5多媒体(用面向对象的方法控制视频、音频播放、暂停、延时暂停)
  2. 综合技术--maven的基本使用
  3. 1008 N的阶乘 mod P ——51Nod(同余定理)
  4. Ubuntu 16.04.6 LTS 发布:紧急修复 APT 漏洞
  5. lucene教程--全文检索技术详解
  6. web前端怎么获取cookie?新手前端开发者需了解
  7. 算法竞赛进阶指南--快速幂,求a^b mod p
  8. Cloud一分钟 | 谷歌退出美国防部云计算竞标;网络黑灰产业已近千亿,个人信息泄露是源头...
  9. android 系统(143)---Android实现App版本自动更新
  10. skyline 环境配置
  11. 仿美团外卖小程序源码
  12. win7系统关闭445端口
  13. 吉他入门教程之吉他音阶训练——练习方法
  14. Linux第二课 文件系统目录结构
  15. html文件变成桌面背景,将HTML文档设置为Windows桌面背景(转)
  16. 无线 WiFi 流量劫持
  17. exit status 145: The directory is not empty,exit status 5: �ܾ����ʡ� ,nvm切换node版本问题汇总
  18. python中英文古风排版_2017年天梯赛部分真题加Pat部分题目(1)
  19. LabVIEW范例无法打开解决办法
  20. Linux安装FTP服务(Pure-FTPd)

热门文章

  1. 算法设计方法之 贪婪算法
  2. Git commit至Gitee报错‘remote: error: hook declined to update refs/heads/master‘的解决方法
  3. sql linux 160天,Ubuntu下用脚本执行sql语句(sqlite)
  4. gtihub第二次上传项目_国道岱山项目双合大桥墩柱桩基打桩施工突破100根
  5. adb指令通过uid控制_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...
  6. 遍历集合的两种方式:迭代器和增强型for循环
  7. python matplotlib绘图显示中文
  8. albert使用的中文语料
  9. 美国知名DJ 3LAU以1160万美元出售全球首套音乐专辑NFT藏品
  10. Filecoin Gas基础费率降至4.67 nanoFIL