মোট উপাদান সংখ্যা দেওয়া থাকলে, কত ধরনের ম্যাট্রিক্স অর্ডার (m×n) সম্ভব তা বের করতে হবে। অর্থাৎ, দেয়া সংখ্যার কতটি বিভাজক জোড়া (m, n) আছে যেখানে m×n = সংখ্যা।
উদাহরণ
ইনপুট: 6
বিভাজক জোড়া: (1,6), (2,3), (3,2), (6,1) → মোট 4টি
ইনপুট: 40
বিভাজক জোড়া: (1,40), (2,20), (4,10), (5,8), (8,5), (10,4), (20,2), (40,1) → মোট 8টি
অ্যালগরিদম
- ১ থেকে n পর্যন্ত লুপ চালান।
- যদি
n % i == 0হয়, তবে কাউন্ট বাড়ান। - ফলাফল রিটার্ন করুন।
সময় জটিলতা: O(n), অপ্টিমাইজড: O(√n)
C++ কোড উদাহরণ
#include <iostream>
using namespace std;
int countMatrixOrders(int n) {
int count = 0;
for (int i = 1; i <= n; i++)
if (n % i == 0) count++;
return count;
}
// Optimized O(√n)
int countMatrixOrdersOptimized(int n) {
int count = 0;
for (int i = 1; i * 1LL * i <= n; i++) {
if (n % i == 0) {
count++;
if (i != n / i) count++;
}
}
return count;
}
int main() {
int n = 6;
cout << "Orders: " << countMatrixOrders(n) << endl;
cout << "Optimized: " << countMatrixOrdersOptimized(n);
return 0;
}
ইনপুট
6
আউটপুট
4