LightOJ 1234 Harmonic Number(打表 + 技巧)
http://lightoj.com/volume_showproblem.php?problem=1234
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Description
In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers:
In this problem, you are given n, you have to find Hn.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case starts with a line containing an integer n (1 ≤ n ≤ 108).
Output
For each case, print the case number and the nth harmonic number. Errors less than 10-8 will be ignored.
Sample Input
12
1
2
3
4
5
6
7
8
9
90000000
99999999
100000000
Sample Output
Case 1: 1
Case 2: 1.5
Case 3: 1.8333333333
Case 4: 2.0833333333
Case 5: 2.2833333333
Case 6: 2.450
Case 7: 2.5928571429
Case 8: 2.7178571429
Case 9: 2.8289682540
Case 10: 18.8925358988
Case 11: 18.9978964039
Case 12: 18.9978964139
题目大意:
求1 + 1/2 + 1/3 + 1/4 + 1/ 5 +...+ 1/ n(1 ≤ n ≤ 108)
调和级数部分和,可以利用公式,(唉,然而我并不记得公式高数没学好-_-||)
如果直接循环的肯定会超时,那么我们开一个10^8/40 = 250万的数组用来分别存
1到1/40的和、1到1/80的和、1到1/120的和、1到1/160的和、... 、1到1/2500000的和
这样对于每一个n最多循环39次,节省了时间
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm> using namespace std;
const int N = ;
const int M = 1e8 + ;
typedef long long ll; double a[N]; int main()
{
int t, n, p = ;
double s = ;
for(int i = ; i < M ; i++)
{
s += (1.0 / i);
if(i % == )
a[i / ] = s;
}
scanf("%d", &t);
while(t--)
{
p++;
scanf("%d", &n);
int x = n / ;
s = a[x];
for(int i = x * + ; i <= n ; i++)
s += (1.0 / i);
printf("Case %d: %.10f\n", p, s);
}
return ;
}
最新文章
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
- 理解Compressed Sparse Column Format (CSC)
- Java--静态区域块
- [改善Java代码]线程优先级只使用三个等级
- ios文本框基本使用,以及所有代理方法的作用
- localhost或本机ip无法连接数据库问题解决与原因
- C#图解 (类和继承)
- python_web框架
- php 生成xml文件
- ViewpageMaiActity
- android项目结构
- nginx;keepalived配置出现主主的解决方法(脑裂问题)
- RPC、RMI、SOAP、WSDL的区别详解
- Quectel module USB driver for linux
- NPOI2.2.0.0实例详解(十一)—向EXCEL插入图片
- python 书籍推荐 二
- Training Logisches Denken
- ASp.Net控件的生命周期
- div的隐藏占用空间位置关系
- mysql 读写分离,主从同步 理论
热门文章
- Oracle11gr2_ADG管理之在备库上模拟failover的过程实战
- 自动补齐flexselect+级联下拉框案例
- ubuntu10.10手工安装jdk1.6
- quartz简介
- 英文单词cipher 和password的区别,用法有什么不同,
- Codeforces 76D 位运算
- Tomcat安装 以Linux 分支 Ubuntu Server 为例
- centos 6.5 部署openvpn 2.4
- Webdings和Wingdings字符码对应表
- 40 Questions to test your skill in Python for Data Science