Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में दूसरी सरणी में कम से कम एक तत्व से विभाज्य तत्वों की गिनती करें


हमें दो सरणियाँ दी गई हैं, मान लीजिए arr_1[] और arr_2[] दोनों में पूर्णांक मान हैं और कार्य उन तत्वों की संख्या की गणना करना है जो दूसरी सरणी में कम से कम एक तत्व से विभाज्य हैं। इसका मतलब है कि हमें उन तत्वों को गिनना है जिनका कम से कम एक गुणनखंड दूसरी सरणी arr_2 में है।

उदाहरण के लिए

इनपुट - int arr_1[] = {1, 2, 3, 4, 5}       arr_2[] = {2, 6, 12, 15} आउटपुट - गिनती 2 है

व्याख्या - arr_1[] में 5 तत्व हैं और arr_2[] में 4 तत्व हैं। arr_1[] के सभी तत्व arr_2[] से विभाज्य हैं। इसलिए गिनती 5 है।

इनपुट - int arr_1[] = {1, 2, 3, 4, 5}       arr_2[] = {13, 11} आउटपुट - गिनती 0 है

व्याख्या - arr_1[] में 5 तत्व हैं और arr_2[] में 2 तत्व हैं। arr_1[] का कोई भी तत्व arr_2[] से विभाज्य नहीं है। इसलिए गिनती 0 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • दो सरणियाँ बनाएं, मान लीजिए arr_1[] और arr_2[]

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

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

  • एक unordered_set चर बनाएं, मान लीजिए us

  • 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() है तो count को 1 से बढ़ाएं

  • अन्यथा, ब्रेक

  • count लौटाएं

  • परिणाम प्रिंट करें।

उदाहरण

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

// पहली सरणी में उन तत्वों की संख्या गिनने के लिए फंक्शन
// जिनका कम से कम एक गुणनखंड दूसरी सरणी में मौजूद है
int totalelements(int arr_1[], int size1, int arr_2[], int size2) {
    // तत्वों की संख्या गिनने के लिए चर 'result'
    int result = 0;
    // दूसरी सरणी के तत्वों का हैश
    unordered_set<int> h;
    for (int i = 0; i < size2; i++) {
        h.insert(arr_2[i]);
    }
    // सरणी तत्वों को पार करें
    // और उनके गुणनखंड खोजें
    for (int i = 0; i < size1; i++) {
        for (int j = 1; j * j <= arr_1[i]; j++) {
            if (arr_1[i] % j == 0) {
                // जांचें कि क्या गुणनखंड h का उपयोग करके
                // दूसरी सरणी में मौजूद है
                if ((h.find(j) != h.end()) || (h.find(arr_1[i] / j) != h.end())) {
                    result++;
                    break;
                }
            }
        }
    }
    return result;
}

// मुख्य फंक्शन
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++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

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

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिससे सभी तत्व विभाज्य हों

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

  1. - C++ में सरणी के प्रत्येक तत्व का सरपासर काउंट खोजें

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