INVSUM - Tính tổng nghịch đảo các số lẻ

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}{3} + \frac{1}{5} + ... + \frac{1}{{2n - 1}}$$

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
1.78730
3.28434

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.



  • 0
    honghoa  đã bình luận lúc 25, Tháng 4, 2024, 16:23

    ac cho em hỏi có cách nào để fix lỗi TLE trong PYTHON, em cảm ơn ạ, có code nào làm giảm tg run dưới 1s ko ạ


    • 1
      dainghiajustiin  đã bình luận lúc 26, Tháng 4, 2024, 15:56

      với bài này thì em nên lưu các giá trị Sn vào 1 mảng rồi khi cần lấy Sn nào thì ta chỉ cần in giá trị của vị trí thứ n trong mảng ra là dc nhé (lưu ý là vị trí n thì vị trí 0 bỏ trống nhé :vv)


      • 0
        hlin  đã bình luận lúc 27, Tháng 4, 2024, 14:48

        c làm cái ví dụ gọi mảng giúp e hiểu với ạ


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

    Bạn sinh ra tất cả các trường hợp ở vòng lặp đầu tiên lưu nó vào một arr. Sau đó chỉ cần gọi lại thôi


  • 0
    manh_str123  đã bình luận lúc 27, Tháng 8, 2023, 2:49

    Làm sao để không bị TLE test cuối ạ. Có nhiều bài tương tự e cũng bị TLE test cuối như thế này.


    • 1
      thh  đã bình luận lúc 27, Tháng 1, 2024, 8:06

      include<bits/stdc++.h>

      using namespace std;

      define int long long

      int t,n; double a[2000000]; void solve() {

      cin >> t;
      a[1] = 1;
      for(int i = 3;i <= 2000000; i += 2)
          a[i] = a[i - 2] + (1.0 / i);
      while(t--)
      {
          cin >> n;
          cout << fixed << setprecision(5) << a[2 * n - 1] << '\n';
      }
      

      } main() {

      ios::sync_with_stdio(false);
      cin.tie(nullptr);cout.tie(nullptr);
      
      solve();
      return 0;
      

      }

      Khởi đầu ta tạo mảng đến 2 * max(n)(ở đây mik đánh số từ 1 nha),rồi tính cả mảng với i = 3; i <= 2000000; i += 2

      ~i += 2~ là để luôn là số lẻ và a[1] = 1 nha

      rồi với mỗi n ta in ra ~a[2 * n + 1]~(vì theo đề bài nó chạy đến 1/(2*n + 1))

      Bạn nào thấy có ích cho mình xin 1 upvote nhé :')


    • 0
      nguien_24  đã bình luận lúc 3, Tháng 1, 2024, 12:44

      dùng 1 mảng lưu hết các giá trị sinh ra từ trước, hoặc dùng qui hoạch động