zoukankan      html  css  js  c++  java
  • 调和级数求和(分块)

    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

    分块:

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    const double p=0.577215664;
    const int maxn=1e8+100;
    /*
    1/i求和为ln(n)+p 
    */
    //数论分块 
    double a[maxn/100+1];
    void inint(){
        a[0]=0;
        a[1]=1.0;
        double t=1.0;
        for(int i=2;i<=maxn;i++){
            t=t+1.0/i;
            if(i%100==0){
                a[i/100]=t; 
            }
        }
    }
    int main(){
       inint();
       int t;
       cin>>t;
       int n;
       int kase=0;
       while(t--){
               cin>>n;
            int t=n/100;
            double ans=a[t];
            for(int i=t*100+1;i<=n;i++){
                ans+=1.0/i;
            } 
            printf("Case %d: %.10lf
    ",++kase,ans);
       }
       return 0;
    } 
  • 相关阅读:
    mysql数据库启动停止
    事务的隔离级别
    排序之选择排序
    排序之希尔排序
    排序之折半插入排序
    排序之直接插入排序
    排序之冒泡排序
    排序之快速排序
    字符串拷贝和拼接
    字符串旋转问题
  • 原文地址:https://www.cnblogs.com/lipu123/p/13903732.html
Copyright © 2011-2022 走看看