কম্পিউটার

C++ এ অন্য অ্যারেতে কমপক্ষে একটি উপাদান দ্বারা বিভাজ্য উপাদান গণনা করুন


আমাদের দুটি অ্যারে দেওয়া হয়েছে, ধরা যাক arr_1[] এবং arr_2[] উভয়েই পূর্ণসংখ্যার মান রয়েছে এবং কাজটি হল অন্য অ্যারের অন্তত একটি উপাদান দ্বারা বিভাজ্য উপাদানগুলির গণনা করা। এর মানে সেখানে আমাদের সেই উপাদানগুলিকে গণনা করতে হবে যেগুলির দ্বিতীয় অ্যারেতে কমপক্ষে একটি ফ্যাক্টর রয়েছে যা arr_2৷

এক ধরণের ডেটা স্ট্রাকচার অ্যারে করে যা একই ধরণের উপাদানগুলির একটি নির্দিষ্ট-আকারের অনুক্রমিক সংগ্রহ সঞ্চয় করতে পারে। একটি অ্যারে ডেটা সংগ্রহের জন্য ব্যবহার করা হয়, তবে একই ধরণের ভেরিয়েবলের সংগ্রহ হিসাবে একটি অ্যারেকে ভাবতে প্রায়ই এটি বেশি কার্যকর।

উদাহরণস্বরূপ

Input − int arr_1[] = {1, 2, 3, 4, 5}
      arr_2[] = {2, 6, 12, 15}
Output − count is 2

ব্যাখ্যা − arr_1[]-এ 5টি উপাদান এবং arr_2[]-এ 4টি উপাদান রয়েছে। arr_1[]-এর সমস্ত উপাদান arr_2[] দ্বারা বিভাজ্য। সুতরাং গণনা 5।

Input − int arr_1[] = {1, 2, 3, 4, 5}
      arr_2[] = {13, 11}
Output − count is 0

ব্যাখ্যা − arr_1[]-এ 5টি উপাদান এবং arr_2[]-এ 2টি উপাদান রয়েছে। arr_1[]-এর কোনো উপাদানই arr_2[] দ্বারা বিভাজ্য নয়। সুতরাং গণনা 0।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • দুটি অ্যারে তৈরি করুন আসুন বলি, arr_1[] এবং arr_2[>

  • length() ফাংশন ব্যবহার করে উভয় অ্যারের দৈর্ঘ্য গণনা করুন যা একটি অ্যারের উপাদান অনুযায়ী একটি পূর্ণসংখ্যা মান প্রদান করবে।

  • একটি অস্থায়ী পরিবর্তনশীল নিন যা উপাদানের গণনা সংরক্ষণ করবে।

  • একটি unordered_set ভেরিয়েবল তৈরি করুন আসুন আমরা বলি

  • i থেকে 0 এবং i সেকেন্ড অ্যারের আকারের চেয়ে কম লুপ শুরু করুন৷

  • লুপের ভিতরে arr_2[i] এ সন্নিবেশ করান।

  • i থেকে 0 এবং i প্রথম অ্যারের আকারের চেয়ে কম এর জন্য আরেকটি লুপ শুরু করুন।

  • লুপের ভিতরে, j থেকে এবং j * j <=arr_1[i]

    এর জন্য আরেকটি লুপ শুরু করুন
  • এই চেক এর ভিতরে যদি arr_1[i]%j =0 হয় তাহলে চেক করুন us.find(j)!=us.end OR us.find(arr[i]/j) !=us.end() তারপর কাউন্ট বৃদ্ধি করুন 1

  • অন্যথায়,, বিরতি

  • রিটার্ন গণনা

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <iostream>
#include <unordered_set>
using namespace std;
// Function to count the number of elements
// in first array whose atleast one factor is
// present in the second array
int totalelements(int arr_1[], int size1, int arr_2[], int size2){
   // variable 'result' to count the number of elements
   int result = 0;
   // Hash of second array elements
   unordered_set<int> h;
   for (int i = 0; i < size2; i++){
      h.insert(arr_2[i]);
   }
   // traverse through array elements
   // and find its factors
   for (int i = 0; i < size1; i++){
      for (int j = 1; j * j <= arr_1[i]; j++){
         if (arr_1[i] % j == 0){
            // check if the factor is present in
            // second array using the h
            if ((h.find(j) != h.end()) || (h.find(arr_1[i] / j)!= h.end())){
               result++;
               break;
            }
         }
      }
   }
   return result;
}
// Main function
int main(){
   int arr_1[] = { 1, 2, 3, 4, 5 };
   int arr_2[] = { 2, 6, 12, 15 };
   int size1 = sizeof(arr_1) / sizeof(arr_1[0]);
   int size2 = sizeof(arr_2) / sizeof(arr_2[0]);
   cout <<"count is "<<totalelements(arr_1, size1, arr_2, size2);
   return 0;
}

আউটপুট

আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −

count is 2

  1. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. প্রিন্ট অ্যারে উপাদান যা C++ এ অন্তত একটি অন্য দ্বারা বিভাজ্য

  3. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়

  4. C++-এ অ্যারের প্রতিটি উপাদানের সারপাসার কাউন্ট খুঁজুন