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