কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারেতে কমপক্ষে একটি অন্য উপাদান দিয়ে বিভাজ্য সংখ্যাগুলো প্রিন্ট করুন

একটি পূর্ণসংখ্যার অ্যারে দেওয়া আছে। যেসব সংখ্যা অ্যারেতে কমপক্ষে একটি অন্য সংখ্যা দিয়ে বিভাজ্য, সেগুলো প্রিন্ট করতে হবে।

উদাহরণ: ইনপুট: 3 12 16 21 → আউটপুট: 12 21 (১২, ৩ দিয়ে বিভাজ্য; ২১, ৩ দিয়ে বিভাজ্য; ১৬ কোনোদ্বারা বিভাজ্য নয়)।

হ্যাশ-ভিত্তিক সমাধান
  • সব উপাদান হ্যাশ সেটে রাখুন এবং সর্বোচ্চ উপাদান বের করুন।
  • প্রতিটি উপাদানের জন্য এর গুণফলগুলো (২x, ৩x, ...) সর্বোচ্চ পর্যন্ত চেক করুন হ্যাশ সেটে আছে কিনা।
  • ডুপ্লিকেট হ্যান্ডলিং করে ফলাফল প্রিন্ট করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;

void printDivisibleNumber(int arr[], int n) {
    unordered_set<int> s;
    int maxElement = INT_MIN;
    for (int i = 0; i < n; i++) {
        s.insert(arr[i]);
        maxElement = max(maxElement, arr[i]);
    }
    unordered_set<int> res;
    for (int i = 0; i < n; i++) {
        if (arr[i] != 0) {
            for (int j = arr[i] * 2; j <= maxElement; j += arr[i]) {
                if (s.find(j) != s.end())
                    res.insert(j);
            }
        }
    }
    unordered_map<int, int> mp;
    for (int i = 0; i < n; i++) mp[arr[i]]++;
    vector<int> ans;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        if (it->second >= 2) {
            if (res.find(it->first) == res.end()) {
                int val = it->second;
                while (val--) ans.push_back(it->first);
            }
        }
        if (res.find(it->first) != res.end()) {
            int val = it->second;
            while (val--) ans.push_back(it->first);
        }
    }
    for (auto x : ans) cout << x << "\t";
}

int main() {
    int arr[] = {2, 4, 7, 12, 14};
    int n = sizeof(arr) / sizeof(arr[0]);
    printDivisibleNumber(arr, n);
    return 0;
}
আউটপুট
12 14 4
  1. C++-এ সার্কুলার অ্যারেতে আঁচবিক উপাদান ছাড়া সর্বোচ্চ যোগফল বের করার পদ্ধতি

  2. সর্টেড অ্যারেতে AP তৈরী করার সব ট্রিপলেট প্রিন্ট করা C++-তে

  3. সি++ প্রোগ্রাম: ন্যূনতম মান x যাতে q%x=0 এবং x%p=0

  4. C++ ব্যবহার করে অ্যারেতে এমন এলিমেন্ট বের করা যেটি সব এলিমেন্টকে ভাগ করে দেয়