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

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


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

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

इनपुट - N = 5, M = 14

आउटपुट - 3

व्याख्या -

(5)2 = 0101 , (14)2 = 1110
योग
  0101
+ 1110
  10011

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

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

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

N = 5 और 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 << "संख्या " << N << " और " << M << " के योग में कैरी उत्पन्न करने वाले दाएं सबसे बिट की स्थिति है ";
    rightCarryBit(N, M);
    return 0;
}

आउटपुट

संख्या 4 और 14 के योग में कैरी उत्पन्न करने वाले दाएं सबसे बिट की स्थिति है 3
  1. C++ में टू सम IV - इनपुट एक BST है C++ में टू सम IV - इनपुट एक BST है

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

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

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

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

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