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

m-এলিমেন্টের সেট খুঁজে বের করা যাতে যেকোনো দুটি এলিমেন্টের পার্থক্য k দিয়ে বিভাজ্য C++-তে


মনে করুন আমাদের N ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে, এবং আরেকটি ভেরিয়েবল K আছে। আমাদের ঠিক m-এলিমেন্ট বের করতে হবে, যাতে যেকোনো দুটি এলিমেন্টের পার্থক্য k-তে বিভাজ্য। তাই যদি অ্যারে A = [4, 7, 10, 6, 9], এবং k = 3 এবং m = 3, তবে আউটপুট হবে "yes"। কারণ আমরা তিনটি উপাদান পাই 4, 7, 10।

এটি সমাধানের জন্য, আমাদের রিমেইন্ডার ট্র্যাক রাখতে হবে, যখন একটি এলিমেন্ট k দিয়ে ভাগ করা হয়। এখন একটি মাল্টি-ডাইমেনশনাল অ্যারে rem[][] তৈরি করুন আকার k, এর ইনডেক্স দেখাচ্ছে রিমেইন্ডার, এবং এলিমেন্টগুলো হবে তাদের ক-দিয়ে ভাগ দিয়ে соответствующо রিমেইন্ডার অনুযায়ী। এখন রিমেইন্ডার সেট ট্রাভার্স করে, আমরা একটি সেট পেতে পারি যার আকার.required size m-এর চেয়ে বড় বা সমান যদি আছে। এবং সেই সেটের যেকোনো দুটি এলিমেন্টের পার্থক্য k দিয়ে বিভাজ্য হবে।

উদাহরণ

#include <iostream>
#include <vector>
using namespace std;

void searchElementsSet(int arr[], int n, int k, int m) {
    vector<int> rem_matrix[k];
    for (int i = 0; i < n; i++) {
        int rem = arr[i] % k;
        rem_matrix[rem].push_back(arr[i]);
    }
    for (int i = 0; i < k; i++) {
        if (rem_matrix[i].size() >= m) {
            cout << "Yes Possible" << endl;
            for (int j = 0; j < m; j++)
                cout << rem_matrix[i][j] << " ";
            return;
        }
    }
    cout << "Impossible";
}

int main() {
    int arr[] = {4, 7, 10, 6, 9};
    int k = 3;
    int m = 3;
    int n = sizeof(arr) / sizeof(arr[0]);
    searchElementsSet(arr, n, k, m);
}

আউটপুট

Yes Possible 4 7 10

  1. ম্যাট্রিক্সের যেকোনো কলামে সর্বোচ্চ পার্থক্যের জোড়া খুঁজে বের করা C++-তে

  2. অ্যারেতে যেসব উপাদানের কমপক্ষে দুটি বড় উপাদান আছে সেগুলো খুঁজে বের করা C++-তে

  3. C++ ব্যবহার করে ম্যাট্রিক্সের দুটি ডায়াগোনালের যোগফলের পার্থক্য বের করা

  4. দেওয়া পার্থক্যের সাথে একটি জোড়া খুঁজে বের করা C++-এ