SUMDIV - Tính tổng các ước số

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Tính tổng của tất cả các ước nguyên dương của số nguyên dương ~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^3, 1 ≤ n ≤ 10^6~.

Output

  • Với mỗi số nguyên dương ~n~, ghi ra trên một dòng số nguyên dương là tổng của tất cả các ước của ~n~.

Sample

Input #1
3
3
8
15
Output #1
4
15
24

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


Comments

Please read the guidelines before commenting.



  • 0
    godhayuu  commented on July 4, 2025, 12:00 a.m.
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int T;
        cin >> T;
        while (T--) {
            int n;
            cin >> n;
            int sum = 0;
            for (int i = 1; i * i <= n; ++i) {
                if (n % i == 0) {
                    sum += i;
                    if (i != n / i) sum += n / i;
                }
            }
            cout << sum << '\n';
        }
        return 0;
    }
    

  • -3
    daylatuu  commented on Oct. 17, 2024, 8:46 a.m. edited

    bài này các bạn có thể sàng ước, giống như sàng nt

    i : 1 -> 1e6

    j : i -> 1e6, j += i ta tăng sang[j] += i

    với mỗi truy vấn ta chỉ cần in sang[n]


  • -1
    super_god  commented on Oct. 8, 2024, 2:51 a.m.

    hello ae


  • -4
    khanh_it1  commented on Nov. 22, 2023, 2:58 a.m.

    lam bi tle. mn cho em xin cach full test voi


  • -3
    kietjumper  commented on Sept. 26, 2024, 12:56 p.m. edit 2

    Thuật toán

    Duyệt ~i~ từ ~1~ -> ~n~/~i~, nếu ~n~ chia hết cho ~i~, sum += ~i~ + ~n~/~i~, sau đó kiểm tra xem ~i~ * ~i~ có bằng n hay không, nếu bằng, sum -= ~i~. Cuối cùng in ra sum là xong!