Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

फ्लिप करने के लिए न्यूनतम बिट्स की गणना करें जैसे कि ए और बी का एक्सओआर सी ++ में सी के बराबर है

हमें लंबाई N के तीन बाइनरी क्रम A, B और C दिए गए हैं। प्रत्येक क्रम एक बाइनरी नंबर का प्रतिनिधित्व करता है। हमें नहीं खोजना है। ए और बी में बिट्स के लिए आवश्यक फ़्लिप जैसे कि ए और बी के एक्सओआर का परिणाम सी होता है। ए एक्सओआर बी सी बन जाता है।

सबसे पहले हम XOR ऑपरेशन की ट्रुथ टेबल के बारे में सीखते हैं -

<टेबल><थेड>X <वें>वाई <थ>एक्स एक्सओआर वाई 0 0 0 0 1 1 1 0 1 1 1 0

उपरोक्त तालिका से हम देखते हैं कि एक्स और वाई में समान मानों के लिए, एक्स एक्सओआर वाई परिणाम 0 और इसके परिणाम 1 हैं। तो यह बिट्स को ए और बी में सी तक पहुंचने के लिए फ़्लिप करने में मददगार होगा। मामले होंगे

  • अगर A[i]==B[i] और C[i]==0 तो कोई फ्लिप नहीं,
  • अगर A[i]==B[i] और C[i]==1 तो A[i] या B[i] में से किसी एक को पलटें और फ्लिप की संख्या को 1 से बढ़ाएं
  • अगर A[i]!=B[i] और C[i]==0 तो A[i] या B[i] में से किसी एक को पलटें और फ्लिप की संख्या को 1 से बढ़ाएं
  • यदि A[i]!=B[i] और C[i]==1 तो कोई फ्लिप की आवश्यकता नहीं है।

इनपुट

A[]= { 0,0,0,0 } B[]= { 1,0,1,0 } C= {1,1,1,1}

आउटपुट

Required flips : 2

स्पष्टीकरण

A[0] xor B[0] 0 xor 1 = 1 C[0]=1 no flip
A[1] xor B[1] 0 xor 0 = 0 C[0]=1 flip count=1
A[2] xor B[2] 0 xor 1 = 1 C[0]=1 no flip
A[3] xor B[3] 0 xor 0 = 0 C[0]=1flip count=2

इनपुट

A[]= { 0,0,1,1 } B[]= { 0,0,1,1 } C= {0,0,1,1}

आउटपुट

Required flips : 2

स्पष्टीकरण

A[0] xor B[0] 0 xor 0 = 0 C[0]=0 no flip
A[1] xor B[1] 0 xor 0 = 0 C[0]=0 no flip
A[2] xor B[2] 1 xor 1 = 0 C[0]=1 flip count=1
A[3] xor B[3] 1 xor 1 = 0 C[0]=1 flip count=2

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • Arrays a[], b[] और c[] का उपयोग बाइनरी नंबर को स्टोर करने के लिए किया जाता है।

  • फंक्शन फ्लिपकाउंट (इंट ए [], इंट बी [], इंट सी [], इंट एन) एरे ए, बी, सी और उनकी लंबाई एन एसिनपुट लेता है और ए [] या बी [ के बिट्स में आवश्यक फ्लिप की गिनती देता है। ] C[] को A xorB के रूप में प्राप्त करने के लिए

  • वेरिएबल काउंट फ्लिप काउंट को दर्शाता है और 0 से इनिशियलाइज़ किया जाता है।

  • लूप के लिए उपयोग करना i =0 से i तक सेल में प्रत्येक बिट को पार करता है

  • प्रत्येक बिट ए [i] और बी [i] के लिए। यदि वे बराबर हैं और C[i] 1 वृद्धि गणना है।

  • प्रत्येक बिट ए [i] और बी [i] के लिए। यदि वे समान नहीं हैं और C[i] 0 वृद्धि गणना है।

  • वांछित परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int flipCount(int A[], int B[], int C[], int N){
   int count = 0;
   for (int i=0; i < N; ++i){
      // If both A[i] and B[i] are equal then XOR results 0, if C[i] is 1 flip
      if (A[i] == B[i] && C[i] == 1)
         ++count;
         // If Both A and B are unequal then XOR results 1 , if C[i] is 0 flip
      else if (A[i] != B[i] && C[i] == 0)
         ++count;
   }
   return count;
}
int main(){
   //N represent total count of Bits
   int N = 5;
   int a[] ={1,0,0,0,0};
   int b[] ={0,0,0,1,0};
   int c[] ={1,0,1,1,1};
   cout <<"Minimum bits to flip such that XOR of A and B equal to C :"<<flipCount(a, b, c,N);
   return 0;
}

आउटपुट

Minimum bits to flip such that XOR of A and B equal to C :2

  1. न्यूनतम x ऐसे खोजें कि (x% k) * (x / k) ==n C++ . में

    दो धनात्मक पूर्णांक n और k दिए गए हैं, और हमें धनात्मक पूर्णांक x ज्ञात करना है, जैसे कि (x% k)*(x / k) n के समान हो। तो अगर n और k क्रमशः 4 और 6 हैं, तो आउटपुट 10 होगा। तो (10% 6) * (10 / 6) =4. जैसा कि हम जानते हैं कि x% k का मान रेंज [1 से k - 1] (0 शामिल नहीं है) में होगा। * के) / (एक्स% के) +

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. दो बाइनरी सरणी में न्यूनतम फ़्लिप ताकि उनका एक्सओआर सी ++ में किसी अन्य सरणी के बराबर हो।

    समस्या कथन 0 और 1 के आकार n के साथ तीन सरणियों को देखते हुए, कार्य पहले और दूसरे सरणी में बिट्स के न्यूनतम फ्लिप को खोजने के लिए है जैसे कि पहले और दूसरे सरणी के ith इंडेक्स बिट का XOR ith इंडेक्स बिट के बराबर है तीसरी सरणी। कृपया ध्यान दें कि हम केवल सरणी 1 के अधिकांश p बिट्स और सरणी 2 के अधिकतम