हमें दो सरणियाँ दी गई हैं, मान लें कि 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