কম্পিউটার

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


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

এটি সমাধান করার জন্য, আমাদের অবশিষ্টাংশের ট্র্যাক রাখতে হবে, যখন একটি উপাদান k দ্বারা ভাগ করা হয়। এখন k আকারের একটি মাল্টি-ডাইমেনশনাল অ্যারে রেম [][][] তৈরি করুন, এর সূচকটি অবশিষ্ট দেখাচ্ছে, এবং k দ্বারা ভাগ করলে উপাদানগুলি তাদের সংশ্লিষ্ট অবশিষ্টাংশ অনুযায়ী উপাদান হবে। এখন অবশিষ্ট সেটটি অতিক্রম করে, আমরা একটি সেট পেতে পারি যার আকার যদি বিদ্যমান থাকে তবে প্রয়োজনীয় আকার 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++ এ প্রদত্ত পার্থক্যের সাথে একটি জোড়া খুঁজুন