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

सरणी में LCM(arr[i],arr[j]) > min(arr[i],arr[j]) वाले जोड़ों की गणना - C++

समस्या विवरण

हमें धनात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य उन जोड़ों की गणना करना है जहाँ LCM(arr[i], arr[j]) > min(arr[i], arr[j])। नोट: जोड़ा (i,j) और (j,i) समान है, दो बार न गिनें।

उदाहरण

इनपुट: arr[] = [1,5,4,2]

आउटपुट: 6

व्याख्या: सभी 6 जोड़े शर्त पूरी करते हैं।

इनपुट: arr[] = [3,3,6]

आउटपुट: 2

व्याख्या: (3,6) दो बार (दो अलग-अलग 3 के साथ)। (3,3) का LCM=3 है जो min=3 से बड़ा नहीं है।

मुख्य अंतर्दृष्टि

शर्त केवल तब गलत होती है जब arr[i] == arr[j] हो। सभी विशिष्ट तत्व जोड़े शर्त पूरी करते हैं।

दृष्टिकोण

आवृत्ति मैप बनाएँ। प्रत्येक आवृत्ति f के लिए, समान-तत्व जोड़े = f*(f-1)/2। कुल जोड़े = n*(n-1)/2। उत्तर = कुल - समान_तत्व_जोड़े।

एल्गोरिदम

  1. आवृत्ति मैप um बनाएँ
  2. same_pairs = 0
  3. प्रत्येक आवृत्ति f के लिए: same_pairs += f*(f-1)/2
  4. total_pairs = n*(n-1)/2
  5. return total_pairs - same_pairs

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int conditional_pair(int arr[], int size) {
    unordered_map um;
    for (int i = 0; i < size; i++) um[arr[i]]++;
    
    int same_pairs = 0;
    for (auto& it : um) {
        int f = it.second;
        same_pairs += f * (f - 1) / 2;
    }
    
    int total_pairs = size * (size - 1) / 2;
    return total_pairs - same_pairs;
}

int main() {
    int arr[] = {4, 1, 7, 3, 2};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count: " << conditional_pair(arr, size);
    return 0;
}

आउटपुट

Count: 10
  1. - C++ में ऐरे के सभी जोड़े का अधिकतम मॉड्यूलो जहां arr[i] >= arr[j]

    इस समस्या में, हमें n तत्वों का एक ऐरे दिया गया है। हमारा कार्य एक = arr[j]. = arr[j]। आइए एक उदाहरण से इस समस्या को समझते हैं, इनपुट - arr[] = {3, 5, 9} आउटपुट - 4 व्याख्या - 9%5 = 4 इस समस्या को हल करने के लिए, एक सरल और सीधा दृष्टिकोण दो नेस्टेड लूप चलाना और हर संभव जोड़े के लिए मॉड्यूलो ढूंढना

  1. - C++ में सरणी में उन जोड़ों (x, y) की संख्या ज्ञात करें जहाँ x^y > y^x

    y^x, जहाँ x, X का एक तत्व है और y, Y का एक तत्व है। मान लीजिए X = [2, 1, 6], और Y = [1, 5], तो आउटपुट 3 होगा। ऐसे तीन जोड़े हैं: (2, 1), (2, 5) और (6, 1)। y^x कुछ अपवादों के साथ। यही तरकीब है। सरणी Y को सॉर्ट करें X के प्रत्येक तत्व x के लिए, हमें Y में उस सबसे छोटी संख्या का सूचकांक ढूंढना होगा ज

  1. - C++ में सरणी में उन सभी जोड़े (a, b) को खोजें जैसे कि a % b = k

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें सभी जोड़े (a, b) प्राप्त करने हैं जैसे कि a%b = k। मान लीजिए सरणी A = [2, 3, 4, 5, 7], और k = 3, तो जोड़े हैं (7, 4), (3, 4), (3, 5), (3, 7)। इसे हल करने के लिए, हम सूची को पार करेंगे और जांचेंगे कि दी गई शर्त पूरी हो रही है या नहीं। उदाहरण #include