हमें पूर्णांक प्रकार के तत्वों की एक सरणी दी गई है। कार्य है सरणी से जोड़े बनाना और उनके सेट बिट्स की गणना करके जांचना कि क्या दोनों तत्वों में समान संख्या में सेट बिट्स हैं।
बाइनरी संख्या में सेट बिट को 1 से दर्शाया जाता है।
इनपुट - int arr[] = {6,5,1,3,7}
आउटपुट - समान सेट बिट्स वाले जोड़ों की संख्या: 3
व्याख्या - वैध जोड़े: (6,5), (6,3), (5,3) - सभी में 2 सेट बिट्स हैं।
उपयोग किया गया दृष्टिकोण
- सरणी इनपुट करें और आकार ज्ञात करें।
countवेरिएबल लें।- दो नेस्टेड लूप: i = 0 से size-1, j = i+1 से size-1।
__builtin_popcount(arr[i])और__builtin_popcount(arr[j])से सेट बिट्स गिनें।- यदि समान हैं तो
count++करें।
उदाहरण (C++ कोड)
#include <iostream>
using namespace std;
int pair_setBit(int arr[], int size) {
int count = 0;
for (int i = 0; i < size; i++) {
for (int j = i+1; j < size; j++) {
int first = __builtin_popcount(arr[i]);
int second = __builtin_popcount(arr[j]);
if (first == second)
count++;
}
}
return count;
}
int main() {
int arr[] = {6,5,1,3,7};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Count of pairs in an array such that both elements has equal set bits are: " << pair_setBit(arr, size);
return 0;
} आउटपुट
Count of pairs in an array such that both elements has equal set bits are: 3