• Harmonic number


    Description
    In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers:
    
    h[n] = 1 + 1/2 + 1/3 + ……+1/n;
    
    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
    #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
    ",kase,a[n]);
            }
            else
            {
                double a=log(n)+r+1.0/(2*n);
                ///double a=log(n+1)+r;
                printf("Case %d: %.10lf
    ",kase,a);
            }
        }
        return 0;
    }

    前面10000个可以正常打表,后面的我们就用公式,再说了,这个公式能成立,本来就是在n比较大的时候,公式如下:  r为常数,r=0.57721566490153286060651209(r就是欧拉常数)。

    特别注意,由于题目要求精度为10^-8,常数r也是前人推导出来的,然而也只推导了有限位数,所以正常利用这个公式,并不能达到精度要求,我们只好比较样例和我们自己输出的数据,增添一些可行的项,经尝试,在原公式的基础上,再减去一个1.0/(2*n)恰好可以满足精度

  • 相关阅读:
    UVA11300分金币
    hdu3987 最小割边数
    直线上的整点个数
    BZOJ 2818 Gcd
    服务器数据恢复成功案例+服务器数据恢复通用原理
    【转】Linux AIO机制
    如何更好地与人沟通?看完这本书,你也能成为沟通高手!
    “自我管理”是成功人士必备的能力,提高自我管理能力推荐你看这些书!
    能帮你提高沟通能力的十沟通类书籍推荐
    团队管理者必看的书籍推荐,团队管理的良方都在这本书里
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5737328.html
Copyright © 2020-2023  润新知