CSES - Counting Divisor | Đếm ước

Xem PDF



Thời gian:
Pypy 3 1.5s
Python 3 3.5s

Tác giả:
Dạng bài
Điểm: 1500 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho \(n\) số nguyên. Với mỗi số, hãy cho biết số lượng ước của nó.

Ví dụ, nếu \(x = 18\), câu trả lời đúng là \(6\) vì các ước của nó là \(1,2,3,6,9,18.\)

Input

  • Dòng đầu tiên chứa một số nguyên \(n\)
  • Sau đó là \(n\) dòng, mỗi dòng chứa một số nguyên \(x\)

Output

  • Đối với mỗi số nguyên, in ra số lượng ước của nó.

Constraints

  • \(1 \leq n \leq 10^5\)
  • \(1 \leq x \leq 10^6\)

Example

Sample input

3
16
17
18

Sample output

5
2
6


Bình luận


  • -3
    QuangTue    5:12 p.m. 13 Tháng 11, 2023

    Hint

    include <iostream>

    include <vector>

    include <cmath>

    using namespace std;

    int countDivisors(int x) {
    if (x <= 0) return 0;
    int result = 1;

    for (int i = 2; i <= sqrt(x); i++) {
        if (x % i == 0) {
            int k = 0;
            while (x % i == 0) {
                k++;
                x /= i;
            }
            result *= (k + 1);
        }
    }
    
    if (x > 1) result *= 2;
    return result;
    

    }

    int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;
    cin >> n;

    while (n--) {
        int x;
        cin >> x;
        cout << countDivisors(x) << "\n";
    }
    
    return 0;
    

    }

    • 11 bình luận nữa