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

सी ++ में के के बराबर सेट बिट्स के साथ सरणी के सभी तत्वों का एक्सओआर

इस समस्या में, हमें n तत्वों की एक सरणी और एक पूर्णांक मान k दिया जाता है। हमारा काम सरणी के सभी तत्वों के XOR को खोजना है, जिन्होंने k के बराबर बिट्स सेट किए हैं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

array = {2, 12, 44, 103, 17} , K =3

आउटपुट

44

इस समस्या को हल करने के लिए, हम सरणी के प्रत्येक तत्व के सेट बिट की गणना करेंगे और इसकी तुलना k से करेंगे। यदि सेट बिट्स की संख्या k के बराबर है, तो हम इसे एक वेक्टर पर धकेलेंगे और वेक्टर के सभी तत्वों का XOR पाएंगे।

सेट बिट काउंट खोजने के लिए हम __builtin_popcount() . का उपयोग करेंगे जो c++ में एक बिल्ट-इन फंक्शन है।

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int XorKSetBits(int arr[], int n, int k){
   vector<int> kBitElments;
   for (int i = 0; i < n; i++) {
      if (__builtin_popcount(arr[i]) == k) {
         kBitElments.push_back(arr[i]);
      }
   }
   int result = kBitElments[0];
   for (int i = 1; i < kBitElments.size(); i++)
      result ^= kBitElments[i];
   return result;
}
int main(){
   int arr[] = { 2, 12, 44, 103, 17 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int k = 3;
   cout<<"XOR of all element of the array with "<<k<<" set bits is : "<<XorKSetBits(arr, n, k);
   return 0;
}

आउटपुट

XOR of all element of the array with 3 set bits is : 44

  1. सी ++ में लगातार तत्वों के एक्सओआर का उपयोग करके सरणी के तत्व खोजें

    विचार करें कि हमें n तत्वों की एक सूची ढूंढनी है। लेकिन हमारे पास वास्तविक सरणी के लगातार दो तत्वों का XOR मान है। साथ ही वास्तविक का पहला तत्व दिया गया है। इसलिए यदि सरणी तत्व a, b, c, d, e, f हैं, तो दिया गया सरणी a^b, b^c, c^d, d^e और e^f होगा। जैसा कि पहला नंबर दिया गया है, जिसका नाम a है, जो ह

  1. सी ++ में सरणी के सभी तत्वों पर एक्सओआर ऑपरेशन लागू करके सरणी योग को कम करना

    विवरण आकार की एक सरणी को देखते हुए, एन। एक तत्व एक्स खोजें जैसे कि सरणी तत्वों का योग न्यूनतम होना चाहिए जब एक्सओआर ऑपरेशन एक्स और सरणी के प्रत्येक तत्व के साथ किया जाता है। If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000

  1. एक सरणी (सी ++) में सभी जोड़ीदार लगातार तत्वों का पूर्ण अंतर?

    इस समस्या में हम देखेंगे कि कैसे हम एक सरणी में तत्वों की प्रत्येक जोड़ी के तत्वों के बीच पूर्ण अंतर प्राप्त कर सकते हैं। यदि n तत्व हैं, तो परिणामी सरणी में n-1 तत्व होंगे। मान लीजिए कि तत्व {8, 5, 4, 3} हैं। परिणाम होगा |8-5| =3, तब |5-4| =1, |4-3|=1. एल्गोरिदम pairDiff(arr, n) begin