lightoj1234 分段打表

原创 2015年11月19日 18:17:03


1234 - Harmonic Number
PDF (English) Statistics Forum
Time Limit: 3 second(s) Memory Limit: 32 MB

In mathematics, the nth harmonic number isthe 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 nthharmonic number. Errors less than 10-8 will be ignored.

Sample Input

Output for Sample Input

12

1

2

3

4

5

6

7

8

9

90000000

99999999

100000000

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



题意:不说了。

分析:一亿的数据量,可以每50个或者100个记录下来。


#include<bitset>
#include<map>
#include<vector>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
#include<set>
#define inf 0x3f3f3f3f
#define mem(a,x) memset(a,x,sizeof(a))

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

inline int in()
{
    int res=0;char c;
    while((c=getchar())<'0' || c>'9');
    while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
    return res;
}
const int N=1e8;
double a[N/50+50];
void init()
{
    double t=1.0;
    for(int i=2;i<=N;i++)
    {
        t += 1.0/i;
        if(i%50 == 0)
        {
            a[i/50]=t;
        }
    }
}
int main()
{
    int T=in(),ii=1;
    init();
    while(T--)
    {
        int n=in();
        double ans = a[n/50];
        for(int i=n/50*50+1;i<=n;i++)
        {
            ans += 1.0/i;
        }
        printf("Case %d: %.10lf\n",ii++,ans);
    }
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IP分段划分表

  • 2017年01月20日 16:57
  • 16KB
  • 下载

LeetCode Partition List 按值分段链表 系统分析

在原链表操作就是分为三段: 第一段:小值; 第二段:大于等于的值; 第三段:是还没有处理完的值。 但是有3个情况:1 可能开始的时候全部小值, 2 可能开始的时候全部是大值 3 分了三段的情...

iOS学习之分段Table View的使用(Grouped样式表格)城市列表

简介:上篇做了Table View的一些介绍 ,还做了一个TableView 的Plain样式的例子,这篇我们学习Grouped样式表的例子,还有用到前面读取Plist的知识(见iOS学习之 pli...

LeetCode从零单排之零分段——Delete Node in a Linked List(删除链表中的元素)

原题: Write a function to delete a node (except the tail) in a singly linked list, given only acc...
  • dt_yee
  • dt_yee
  • 2015年07月15日 20:54
  • 341

[排列组合 + 分段打表] 51nod 算法马拉松25 A. 二分答案

题意题解分析一下可得,如果二分最后要停在k位置,需要有一些位置上的值满足与m的一些大小关系,而且关系都是确定的。 直接模拟一趟就可以得到:有num1个位置需要满足a[i]m,其他位置显然可以随便乱放...
  • CHHNZ
  • CHHNZ
  • 2017年05月28日 22:39
  • 351

HAWQ取代传统数仓实践(十二)——维度表技术之分段维度

一、分段维度简介        在客户维度中,最具有分析价值的属性就是各种分类,这些属性的变化范围比较大。对某个个体客户来说,可能的分类属性包括:性别、年龄、民族、职业、收入和状态,例如,新客户、活跃...
  • wzy0623
  • wzy0623
  • 2017年06月01日 11:42
  • 3233

Android开发 - 下拉刷新和分段头悬停列表

项目源码 本文所述项目已开源,源码地址 为什么做PullToRefresh-PinnedSection-ListView 前段时间因为项目需求,需要在Android中对ListView同时增加下拉刷新...
  • tongcpp
  • tongcpp
  • 2014年10月22日 10:30
  • 8702

分段管理机制(段描述符,描述符表,段选择符)

逻辑地址-=>线性地址-=>物理地址前面我们提到了当使用80x86微处理器时,有三种不同的地址: 逻辑地址(logical address):包含在机器语言指令中用来指定一个操作数或...

oracle两个表连接的分段查询

Select * From ( Select RowNum field_ByName,d.* From  (SELECT b.*,c.loginaccount FROM JITUMS.TB_READE...

卡特兰数+分段打表 hdu6084寻找母串

寻找母串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • update7
  • update7
  • 2017年08月09日 10:31
  • 9619
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lightoj1234 分段打表
举报原因:
原因补充:

(最多只允许输入30个字)