এই সমস্যায়, আমাদের তিনটি পূর্ণসংখ্যা মান L, R, এবং k দেওয়া আছে। আমাদের কাজ হল নির্দিষ্ট পরিসীমায় K সংখ্যক বিভাজক থাকা সংখ্যা খুঁজে বের করা। আমরা পরিসীমা [L, R] এ সংখ্যাগুলোর মধ্যে কতগুলো কে ভাগ করা যায় তা গণনা করব। ১ এবং সংখ্যাটি নিজেরও ভাগসঙ্খ্যা হিসেবে গণনা করব।
উদাহরণ
ইনপুট
a = 3, b = 10, k = 4
আউটপুট
2
ব্যাখ্যা
৩ থেকে ১০ এর মধ্যে যেসব সংখ্যার ঠিক ৪টি বিভাজক আছে: ৬: বিভাজক = ১, ২, ৩, ৬ ৮: বিভাজক = ১, ২, ৪, ৮
সমাধানের পদ্ধতি
এই সমস্যার সহজ সমাধান হল K সংখ্যক বিভাজক গণনা করা। সুতরাং, আমরা পরিসীমার সব সংখ্যার জন্য বিভাজক সংখ্যা গণনা করব। এবং যদি বিভাজক সংখ্যা K-এর সমান হয়, তবে সংখ্যা কাউন্টে ১ যোগ করব।
প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int countDivisors(int n) {
int divisors = 0;
for (int i = 1; i <= sqrt(n) + 1; i++) {
if (n % i == 0) {
divisors++;
if (n / i != i)
divisors++;
}
}
return divisors;
}
int countNumberKDivisors(int a, int b, int k) {
int numberCount = 0;
for (int i = a; i <= b; i++) {
if (countDivisors(i) == k)
numberCount++;
}
return numberCount;
}
int main() {
int a = 3, b = 10, k = 4;
cout << "The count of numbers with " << k << " divisors is " << countNumberKDivisors(a, b, k);
return 0;
}
আউটপুট
The count of numbers with 4 divisors is 2