zoukankan      html  css  js  c++  java
  • Harmonic Number(调和级数+欧拉常数)

    Harmonic Number

    https://vjudge.net/contest/288520#problem/I

    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

    欧拉常数:

    const double oula=0.57721566490153286060651209;

    近似公式:ln(n)+C+1/(2*n)    C++中log即为ln

    在n小的时候不精确,需要暴力求解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 10000005
     9 #define eps 1e-8
    10 #define pi acos(-1.0)
    11 #define rep(k,i,j) for(int k=i;k<j;k++)
    12 typedef long long ll;
    13 typedef pair<int,int> pii;
    14 typedef pair<long long,int>pli;
    15 typedef pair<int,char> pic;
    16 typedef pair<pair<int,string>,pii> ppp;
    17 typedef unsigned long long ull;
    18 const long long mod=1e9+7;
    19 const double oula=0.57721566490153286060651209;
    20 using namespace std;
    21 
    22 int t;
    23 
    24 int main(){
    25    // std::ios::sync_with_stdio(false);
    26     int t;
    27     cin>>t;
    28     ///log(n)+C+1/(2*n)  
    29     for(int _=1;_<=t;_++){
    30         int n;
    31         cin>>n;
    32         double ans=0;
    33         if(n<=100000)
    34             for(int i=1;i<=n;i++){
    35                 ans=ans+1.0/i;
    36             }
    37         else{
    38             ans=log(n)+oula+1.0/2/n;
    39         }
    40         printf("Case %d: %.8f
    ",_,ans);
    41 
    42     }
    43 }
    View Code
  • 相关阅读:
    工作中,怎么做好规范
    每日一链
    模仿电子商务垂直菜单
    电脑不同的分辨率自适应显示
    怎样成为一位合格的程序员
    巅峰极客线上第一场ctf——RE
    恶意代码分析常见Windows函数
    巅峰极客线上第二场部分ctf
    恶意代码分析:虚拟网络环境配置
    0ctf2017 pwn babyheap
  • 原文地址:https://www.cnblogs.com/Fighting-sh/p/10560071.html
Copyright © 2011-2022 走看看