SUM5 - Tính tổng nghịch đảo

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Với số nguyên dương ~n~, tính tổng:

$${S_n} = 1 + \frac{1}{2} + \frac{1}{3} + ... + \frac{1}{n}$$

Input

  • Dòng đầu ghi số nguyên dương ~T~ là số bộ test;
  • ~T~ dòng tiếp theo, mỗi dòng chứa một số nguyên dương ~n~.

Giới hạn:

  • ~1 ≤ T ≤ 10^5, 1 ≤ n ≤ 10^6~.

Output

  • Với mỗi bộ test, ghi ra trên một dòng số ~S_n~ làm tròn đến ~5~ chữ số thập phân.

Sample

Input #1
3
1
5
100
Output #1
1.00000
2.28333
5.18738

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    vinhtaixiu  đã bình luận lúc 2, Tháng 5, 2024, 14:59

    SUS


  • 0
    hohoanghai5042011  đã bình luận lúc 19, Tháng 3, 2024, 9:22

    #include <bits/stdc++.h>

    using namespace std; long long i,n,b; long double a[1000001]; void sang(){ a[0]=0.00000; for (i=1;i<=1e6;i++) a[i]=a[i-1]+(double)1 / i; } int main(){ sang(); iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0); cin>>n; while(n--){ cin>>b; cout<<setprecision(5) << fixed << a[b] << endl; } return 0; }


  • 2
    chinhle  đã bình luận lúc 31, Tháng 1, 2024, 9:20

    include <iostream>

    include <iomanip>

    include <vector>

    using namespace std;

    int main() { vector<long double> a(1000001); for (long double i = 1; i <= 1000000; i++) { a[i] = a[i - 1] + (double)1 / i; } long long t; cin >> t; while(t--){ long long b; cin >> b; cout << setprecision(5) << fixed << a[b] << "\n"; } }


  • 0
    ______  đã bình luận lúc 9, Tháng 12, 2023, 7:28

    include <iostream>

    include <iomanip>

    include <vector>

    using namespace std;

    vector<long double> a(1000001);

    void sinh() { a[0] = 0.00000; for (long long i = 1; i <= 1000000; i++) { a[i] = a[i - 1] + (double)1 / i; } }

    int main() { iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0); sinh(); long long n; cin >> n; while (n--) { long long b; cin >> b; cout << setprecision(5) << fixed << a[b] << "\n"; } return 0; }

    Code da AC (code tu giahuy_367)


  • -2
    giahuy_367  đã bình luận lúc 13, Tháng 11, 2023, 12:32

    Code da AC

    include <bits/stdc++.h>

    using namespace std; long double a[1000001]; void sinh() { a[0] = 0.00000; for(long long i = 1;i <= 1000000;i++) { a[i] = a[i-1]+(double)1/i; } }

    int main(){ iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0); sinh(); long long n; cin >> n; while(n--) { long long b; cin >> b; cout << setprecision(5) << fixed << a[b] << "\n"; } return 0; }


  • 1
    lch101  đã bình luận lúc 27, Tháng 8, 2023, 17:17

    nice bro


  • 0
    tranhoangviet2000553  đã bình luận lúc 25, Tháng 8, 2023, 8:59

    TLE cuoi la gi the a


    • 0
      ngkhacbaolam2809  đã bình luận lúc 22, Tháng 10, 2023, 8:43

      kiểu dữ liệu long long


  • 0
    DucThanh_369  đã bình luận lúc 24, Tháng 8, 2023, 2:17

    test cuoi TLE kho qua ai giup mik voi


    • 0
      QiTunTun  đã bình luận lúc 27, Tháng 8, 2023, 15:34

      n <= 10^6 với t <= 10^5 thì babnj dùng cách sinh ra tất cả các đáp án ròi gọi lại là dc nhé b


      • 0
        Kphong  đã bình luận lúc 12, Tháng 10, 2023, 15:46

        ban noi lai di


        • 0
          tuattsx3  đã bình luận lúc 18, Tháng 11, 2023, 10:58

          bạn tạo 1 hàm f có độ lớn 10^5. và đó là tổng từ 1+1/2+...+1/n. và khi gọi n, ta chỉ cần gọi đến hàm f[i] là ra kết quả

          t = int(input()); z = [0]t; for i in range(t): z[i] = int(input()); dp = [1](100005) for i in range(2,100005+1): dp[i] = dp[i-1]+1/i for i in z: res ='%.5f'% dp[i] print(res)


      • -1
        Chaoemnha005  đã bình luận lúc 1, Tháng 9, 2023, 9:05

        mình chưa hiểu ý bạn lắm phiền bạn nói kĩ hơn giúp mình