Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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[]

  • लंबाई () फ़ंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो एक सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।

  • एक अस्थायी चर लें जो तत्वों की संख्या को संग्रहीत करेगा।

  • एक unordered_set वेरिएबल बनाएं मान लें कि हम कहते हैं

  • i से 0 के लिए प्रारंभ लूप और मैं दूसरी सरणी के आकार से कम।

  • लूप के अंदर arr_2[i] में इन्सर्ट करें।

  • i से 0 के लिए एक और लूप प्रारंभ करें और मैं पहले सरणी के आकार से छोटा हूं।

  • लूप के अंदर, j से और j * j <=arr_1[i]

    . के लिए एक और लूप प्रारंभ करें
  • इस चेक के अंदर अगर arr_1[i]%j =0 है, तो जांचें कि क्या us.find(j)!=us.end या 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. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

    इस समस्या में, हमें एक वृत्ताकार सरणी cirArr[] दी गई है। हमारा काम सर्कुलर सरणी में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं। समस्या का विवरण वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लि

  1. एक सरणी तत्व खोजें जैसे कि सभी तत्व इसके द्वारा c++ . का उपयोग करके विभाज्य हैं

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें A से एक अवयव इस प्रकार ज्ञात करना है कि सभी तत्वों को इससे विभाजित किया जा सके। मान लीजिए कि ए [15, 21, 69, 33, 3, 72, 81] जैसा है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हो सकती हैं। इस समस्या को हल करने के लिए, हम ए में सबसे

  1. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

    मान लीजिए कि एक सरणी A दिया गया है। हमें उस सरणी में प्रत्येक तत्व की संख्या को पार करना होगा। पार करने वाले अधिक से अधिक तत्व होते हैं जो वर्तमान तत्व की सरणी के दाईं ओर मौजूद होते हैं। मान लीजिए A ={2, 7, 5, 3, 0, 8, 1}, श्रेष्ठ हैं {4, 1, 1, 2, 0, 0}, तो 2 में दायीं ओर 4 संख्याएँ हैं, जो बड़ी हैं