Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số ma trận bậc khác nhau từ số phần tử cho trước trong C++

Giới thiệu

Cho tổng số phần tử N, đếm số cặp (m, n) nguyên dương sao cho m × n = N. Mỗi cặp tương ứng một bậc ma trận (m hàng, n cột).

Ví dụ

  • N = 6 → (1,6), (2,3), (3,2), (6,1) → 4 ma trận
  • N = 40 → 8 ma trận (các ước số của 40)

Ý tưởng giải thuật

Số ma trận = số ước nguyên dương của N. Duyệt i từ 1 đến √N, nếu N % i == 0 thì cộng 1 (hoặc 2 nếu i ≠ N/i).

Ví dụ triển khai (C++)

#include <iostream>
using namespace std;

int countMatrixOrders(int n) {
    int count = 0;
    for (int i = 1; i * 1LL * i <= n; i++) {
        if (n % i == 0) {
            count++;
            if (i != n / i) count++; // cặp đối xứng (m,n) và (n,m)
        }
    }
    return count;
}

int main() {
    int n = 6;
    cout << "So ma tran bac khac nhau: " << countMatrixOrders(n); // 4
    return 0;
}

Đầu vào

6

Đầu ra

4