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

C++ में दो बाइनरी के योग में पहले कैरी के साथ सबसे दाहिने बिट की स्थिति


इस समस्या में, हमें दो धनात्मक पूर्णांक N और M दिए गए हैं। हमारा कार्य सबसे दाहिने बिट को प्रिंट करना है जो N और M के योग के बाइनरी जोड़ में पहला कैरी बिट उत्पन्न करता है। ।

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

इनपुट - एन =5, एम =14

आउटपुट -3

स्पष्टीकरण -

(5)2 = 0101 , (14)2 = 1110
Sum 0101
+   1110
    10011

इस समस्या को हल करने के लिए, हम बूलियन बीजगणित के कुछ अवलोकनों पर विचार करेंगे।

जब दोनों संख्याएं 1 होंगी तो योग एक कैरी उत्पन्न करेगा। तो, हम सभी बिट्स पाएंगे जहां कैरी उत्पन्न होता है। यह दोनों संख्याओं का पता लगाकर और उनकी संक्रिया को ज्ञात करके किया जाएगा। और संख्या का सबसे दाहिना भाग ज्ञात करें।

यह समझने में थोड़ा जटिल लगता है, आइए इस पद्धति का उपयोग करके एक उदाहरण को हल करें।

N = 5 and M = 14
N&M = 0100

यहां सबसे दाहिना सेट बिट इंडेक्स 3 पर है।

उदाहरण

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

#include <iostream>
#include <math.h>
using namespace std;
int rightSetBit(int N) {
   int bitIndex = log2(N & -N)+1;
   return bitIndex;
}
void rightCarryBit(int N, int M) {
   int carryIndex = rightSetBit(N & M);
   cout<<carryIndex;
}
int main() {
   int N=4, M=14;
   cout<<"The position of rightmost bit that generates carry in the sum of "<<N<<" and "<<M<<" is ";
   rightCarryBit(N,M);
   return 0;
}

आउटपुट

The position of rightmost bit that generates carry in the sum of 4 and 14 is 3

  1. दो योग IV - इनपुट C++ में एक BST है

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक लक्ष्य मान है; हमें यह जांचना होगा कि क्या बीएसटी में दो तत्व मौजूद हैं जैसे कि उनका योग दिए गए लक्ष्य के बराबर है या नहीं। तो, अगर इनपुट पसंद है तो आउटपुट ट्रू होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी को परिभाषित करें v एक

  1. C++ में दो बाइनरी ट्री मर्ज करें

    मान लीजिए कि हमारे पास दो बाइनरी पेड़ हैं और विचार करें कि जब हम उनमें से एक को दूसरे को कवर करने के लिए रखते हैं, तो दो पेड़ों के कुछ नोड्स ओवरलैप हो जाते हैं जबकि अन्य ओवरलैपिंग होते हैं। हमें उन्हें एक नए बाइनरी ट्री में मिलाना होगा। मर्ज नियम इस तरह है कि यदि दो नोड्स ओवरलैपिंग कर रहे हैं, तो नो

  1. C++ में दो बाइनरी ट्री में पहले गैर मेल खाने वाले पत्ते खोजें

    मान लीजिए कि हमारे पास दो बाइनरी ट्री हैं। हमें दो पेड़ों का पहला पत्ता ढूंढना है, जो मेल नहीं खाता। यदि मेल न खाने वाले पत्ते नहीं हैं, तो कुछ भी प्रदर्शित न करें। अगर ये दो पेड़ हैं, तो पहले गैर-मिलान पत्ते 11 और 15 हैं। यहां हम स्टैक का उपयोग करके एक साथ दोनों पेड़ों के पुनरावृत्त प्रीऑर्डर ट