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

C++ का उपयोग करके उन अद्वितीय त्रिकों की संख्या ज्ञात कीजिए जिनका XOR शून्य है

इस लेख में, हम अद्वितीय संख्याओं के दिए गए सरणी में अद्वितीय ट्रिपल (x, y, z) की संख्या की गणना करने पर चर्चा करेंगे, जहां उनका XOR 0 है। इस प्रकार, ट्रिपल को अद्वितीय होना चाहिए, जहां सभी तीन तत्व अद्वितीय हैं और सभी की गणना करेंगे उदाहरण के लिए त्रिगुणों का संयोजन -

Input : arr[ ] = { 5, 6, 7, 1, 3 }
Output : 2
Explanation : triplets are { 5, 6, 3 } and { 6, 7, 1 } whose XOR is zero.

Input : arr[ ] = { 3, 6, 8, 1, 5, 4 , 12}
Output : 3
Explanation : Triplets are { 3, 6, 5 }, { 1, 5, 4 } and { 4, 8, 12 } whose XOR is zero.

समाधान खोजने के लिए दृष्टिकोण

हम जानते हैं कि समान मानों का XOR हमेशा शून्य देता है। तो हम अद्वितीय ट्रिपल पाते हैं, एक आशावादी दृष्टिकोण लागू किया जा सकता है, जो एक सरणी से दो मानों का एक्सओआर ढूंढ रहा है और परिणाम संग्रहीत कर रहा है, और उस मूल्य की खोज कर रहा है जो सरणी में परिणाम के बराबर है। साथ ही, परिणाम का मान जोड़े में किसी भी मान के बराबर नहीं होना चाहिए। के लिए देखें

उदाहरण

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

int main () {
   int arr[] = { 3, 6, 8, 1, 5, 4, 12 };
   int n = sizeof (arr) / sizeof (arr[0]);
   int result;
   // count variable to keep count of pairs.
   int count = 0;
   // creating a set to store unique numbers .
   unordered_set < int >values;
   // inserting values in set.
   for (int i = 0; i < n; i++)
      values.insert (arr[i]);


   // traverse for all pairs to calculate XOR.
   for (int i = 0; i < n - 1; i++) {
      for (int j = i + 1; j < n; j++) { // finding xor of i, j pair.
         int XR = arr[i] ^ arr[j];

         // checking if XOR value of pair present in array
         // and value should not be in pairs.
         if (values.find (XR) != values.end () && XR != arr[i] &&
            XR != arr[j])
            count++;
      }

   }
   // storing result
   result = count / 3;
   cout << "Number of unique triplets : " << result;
   return 0;
}

आउटपुट

Number of unique triplets : 3

उपरोक्त कोड की व्याख्या

  • unordered_set मानों का एक सेट बनाना; किसी दिए गए सरणी की अद्वितीय संख्याओं को संग्रहीत करने के लिए।
  • values.insert (arr[i]) का उपयोग करके सेट में मान डालने के लिए for() लूप का उपयोग करना।
  • सभी जोड़ियों को पार करने और उनके XOR मान की गणना करने के लिए दो नेस्टेड लूप का उपयोग करना।
  • फिर, सरणी में XOR मान खोजें और यदि मान किसी सरणी में पाया जाता है, न कि जोड़े में।
  • परिणाम को गिनती / 3 के रूप में संग्रहीत करने से ट्रिपल के तीन संयोजनों की गणना होगी, और हमें अद्वितीय ट्रिपल की आवश्यकता है।

निष्कर्ष

इस लेख में XOR मान 0 वाले त्रिक की संख्या ज्ञात करने पर चर्चा की गई; हमने अद्वितीय त्रिगुणों को खोजने के लिए एक आशावादी दृष्टिकोण पर चर्चा की। हमने समस्या के समाधान के लिए C++ प्रोग्राम पर भी चर्चा की। हालाँकि, हम इस प्रोग्राम को किसी अन्य प्रोग्रामिंग भाषा जैसे जावा, सी, पायथन, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क

  1. C++ का उपयोग करके सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव संबंधों की संख्या को खोजने के तरीकों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृत संख्याओं के समुच्चय पर, हमें प्रतिवर्ती संबंधों की संख्या निर्धारित करनी होगी। चिंतनशील संबंध − समुच्चय A में एक संबंध प्रतिवर्ती कहलाता है यदि (a, a) R