Ước số và tổng ước số

Xem PDF

Điểm: 300 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Cho số nguyên dương \(N (N \leq 2∗10^9)\).

Yêu cầu: Đếm số lượng ước số của \(N\) và tổng các ước số của \(N\).

Input

  • Số nguyên dương \(N\)

Output

  • Chứa hai số nguyên là sô lượng ước số và tổng các ước của \(N\)

Example

Test 1

Input
10 
Output
4 18
Note
  • Số \(10\) có ước là \(1\) \(2\) \(5\) \(10\) và tổng \(1 + 2 + 5 + 10 =18\)

Bình luận

  • Tòn_mt 5:03 p.m. 29 Tháng 3, 2025 chỉnh sửa 20

    include <bits/stdc++.h>

    using namespace std;
    int main(){
    long long n,s,t;
    cin>>n;
    s=0;t=0;
    for(int i=1;i<=sqrt(n);i++){
    if(i*i==n){
    t+=i;
    s++;
    }
    else if(n%i==0){
    s+=2;
    t+=i;
    t+=n/i;
    }
    }
    cout<<s<<" "<<t;
    }

    • p12a3PhamNguyenKhanhChi 6:47 p.m. 29 Tháng 11, 2024

      ít thời gian tóa đi
      nếu bỏ bớt còn 5 test là tui ac rùi
      :((((((((

      • P2D1_BelugaAndHecker 12:07 p.m. 28 Tháng 7, 2024

        Cái này sai là sao ta? (Code bằng Python)

        • minhducnopro 3:46 p.m. 16 Tháng 7, 2024

          include <bits/stdc++.h>

          using namespace std;
          long long n,dem = 0,tong = 0;
          int main(){
          cin >> n;
          long long h = sqrt(n);
          for (long long i = 1;i <= h;i++)
          if (n % i == 0){
          dem+=2;
          tong+=i + n/i;
          }
          if (h*h == n){
          dem--;
          tong-=h;
          }
          cout << dem << " " << tong;
          return 0;
          }

          • BestFlo2k9 12:47 p.m. 26 Tháng 6, 2024

            Ko cần làm như thế

            include <bits/stdc++.h>

            using namespace std;
            ll n,dem = 0,tong = 0;
            int main(){
            cin >> n;
            ll h = sqrt(n);
            for (ll i = 1;i <= h;i++)
            if (n % i == 0){
            dem+=2;
            tong+=i + n/i;
            }
            if (h*h == n){
            dem--;
            tong-=h;
            }
            cout << dem << " " << tong;
            return 0;
            }

            • kay 9:24 p.m. 16 Tháng 6, 2024

              import math
              N = int(input().strip())
              dem = 0
              k = 0
              for i in range(1, int(math.sqrt(N)) + 1):
              if N % i == 0:
              dem += 1
              k += i
              if i != N // i:
              dem += 1
              k += N // i
              print(dem,k)

              • TIT_manh 8:38 p.m. 29 Tháng 4, 2024
                Mình xin chia sẻ cách giải bài này như sau:
                • Duyệt i từ 1 đến căn bặc 2 của n sao cho khi gặp ước của n thì:
                  • Tăng biến đếm ước.
                  • Tăng tổng ước lên i đơn vị.
                  • Nếu thấy rằng i khác n/i thì:
                    ++ Tăng biến đếm ước.
                    ++ Tăng tổng ước lên n/i đơn vị.
                Code mẫu C++

                include <bits/stdc++.h>

                using namespace std;
                int main() {
                long long n, dem, s;
                cin >> n;
                dem = 0;
                s = 0;
                for (int i = 1; i <= sqrt(n); i++) {
                if (n % i == 0) {
                dem++;
                s = s + i;
                if (i != n / i) {
                dem++;
                s = s + (n / i);
                }
                }
                }
                cout << dem << " " << s;
                return 0;
                }

                • votuantai14112011 8:14 a.m. 31 Tháng 3, 2024

                  Tăng time cho py3 dc ko ad

                  • votagiahuy2008 10:41 p.m. 21 Tháng 7, 2023

                    include <bits/stdc++.h>

                    using namespace std;
                    int main()
                    {
                    long long n,d=0;
                    cin>>n;
                    long long s=0;
                    for(int i=1; i<=sqrt(n);i++)
                    if (n%i==0)
                    {
                    s+=i;d++;
                    long long j=n/i;
                    if(i!=j)
                    {
                    s=s+j;
                    d++;
                    }

                        }
                    cout<<d<<" "<<s;
                    

                    }

                    • nguyendanghau2006 10:24 p.m. 7 Tháng 11, 2021

                      This comment is hidden due to too much negative feedback. Click here to view it.

                      • 2 bình luận nữa