इस लेख में, हम दी गई अद्वितीय संख्याओं के एरे में अद्वितीय ट्रिपलेट्स (x, y, z) की संख्या गिनने पर चर्चा करेंगे जहां उनका XOR 0 है। इस प्रकार, ट्रिपलेट्स अद्वितीय होने चाहिए जहां सभी तीन तत्व अद्वितीय हों और ट्रिपलेट्स के सभी संयोजनों को गिनेंगे। उदाहरण के लिए:
इनपुट: arr[] = {5, 6, 7, 1, 3}
आउटपुट: 2
व्याख्या: ट्रिपलेट्स हैं {5, 6, 3} और {6, 7, 1} जिनका XOR शून्य है।
इनपुट: arr[] = {3, 6, 8, 1, 5, 4, 12}
आउटपुट: 3
व्याख्या: ट्रिपलेट्स हैं {3, 6, 5}, {1, 5, 4} और {4, 8, 12} जिनका XOR शून्य है।
समाधान का दृष्टिकोण
हम जानते हैं कि समान मानों का XOR हमेशा शून्य देता है। इसलिए हम अद्वितीय ट्रिपलेट्स ढूंढते हैं, एक आशावादी दृष्टिकोण लागू किया जा सकता है, जो एरे से दो मानों का 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;
// जोड़ों की गिनती रखने के लिए काउंट वेरिएबल।
int count = 0;
// अद्वितीय संख्याओं को स्टोर करने के लिए एक सेट बनाना।
unordered_set values;
// सेट में मान डालना।
for (int i = 0; i < n; i++)
values.insert(arr[i]);
// XOR की गणना करने के लिए सभी जोड़ों को ट्रैवर्स करना।
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) { // i, j जोड़े का XOR ढूंढना।
int XR = arr[i] ^ arr[j];
// जांचना कि क्या जोड़े का XOR मान एरे में मौजूद है
// और मान जोड़ों में नहीं होना चाहिए।
if (values.find(XR) != values.end() && XR != arr[i] &&
XR != arr[j])
count++;
}
}
// परिणाम स्टोर करना
result = count / 3;
cout << "अद्वितीय ट्रिपलेट्स की संख्या: " << result;
return 0;
}
आउटपुट
अद्वितीय ट्रिपलेट्स की संख्या: 3
उपरोक्त कोड की व्याख्या
- अद्वितीय संख्याओं को स्टोर करने के लिए unordered_set
values का सेट बनाना। - values.insert(arr[i]) का उपयोग करके सेट में मान डालने के लिए for() लूप का उपयोग करना।
- सभी जोड़ों के माध्यम से ट्रैवर्स करने और उनके XOR मान की गणना करने के लिए दो नेस्टेड लूप का उपयोग करना।
- फिर, XOR मान को एरे में खोजें और काउंट बढ़ाएं यदि मान एरे में मिलता है और जोड़ों में नहीं।
- परिणाम को count / 3 के रूप में स्टोर करना क्योंकि यह ट्रिपलेट्स के तीन संयोजनों को गिनेगा, और हमें अद्वितीय ट्रिपलेट्स की आवश्यकता है।
निष्कर्ष
इस लेख में, XOR मान 0 वाले ट्रिपलेट्स की संख्या खोजने पर चर्चा की गई; हमने अद्वितीय ट्रिपलेट्स खोजने के लिए एक आशावादी दृष्टिकोण पर चर्चा की। हमने इस समस्या को हल करने के लिए C++ प्रोग्राम पर भी चर्चा की। हालांकि, हम इस प्रोग्राम को Java, C, Python आदि किसी भी अन्य प्रोग्रामिंग भाषा में लिख सकते हैं। आशा है कि आपको यह लेख मददगार लगा होगा।