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

C++ में बिटवाइज़ AND से 0 को X में बदलने के अधिकतम चरण


इस समस्या में, हमें एक पूर्णांक X दिया गया है। हमारा कार्य 0 से X में बदलने में लगे कुल चरणों की संख्या ज्ञात करना है।

मान्य परिवर्तन - एक चरण तब गिना जाता है जब A से B में एक परिवर्तन होता है। परिवर्तन होने की शर्त है A != B और A & B = A (& बिटवाइज़ AND है)। तो, 1 चरण A से B में परिवर्तन है और हमें एक प्रोग्राम बनाना है जो 0 से X में बदलने के अधिकतम चरणों की गणना करेगा।

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

इनपुट - X = 7

आउटपुट - 3

व्याख्या -

हमें 0 से 7 में बदलना है।

उठाए गए चरण होंगे चरण1: 0(00) से 1(01), 0!= 1 और 0&1 = 0, परिवर्तन 00=>01 चरण2: 1(001) से 3(011), 1!= 3 और 1&3 = 1, परिवर्तन 001=>011 चरण3: 3(0011) से 7(0111), 3!= 7 और 3&7 = 3, परिवर्तन 0011=>0111।

इस समस्या को हल करने के लिए, हम X में सेट बिट्स की संख्या गिनेंगे जो 0 से X में अधिकतम परिवर्तन देगा।

चूंकि हमें अधिकतम परिवर्तन चाहिए, हमें प्रत्येक सेट बिट (मान 1 वाला बिट) के लिए चरण दर चरण जाना होगा। बिट दर बिट परिवर्तन 0 से X में बदलने के लिए अधिकतम चरण देगा।

A से B में परिवर्तन में, A के सभी सेट बिट्स B में सेट होने चाहिए, लेकिन विपरीत आवश्यक नहीं है। तो, न्यूनतम परिवर्तन 1 हो सकता है क्योंकि 0 में कोई सेट बिट नहीं है जो सबसे छोटा रूपांतरण प्रत्यक्ष बनाता है।

जैसा कि हमने उदाहरण में देखा है, संख्याओं का बाइनरी रूपांतरण और उनके बिटवाइज़ AND।

उदाहरण

हमारे समाधान के कार्यान्वयन को दर्शाने वाला प्रोग्राम -

// C++ में बिटवाइज़ AND से 0 को X में बदलने के अधिकतम चरणों का प्रोग्राम

#include <bits/stdc++.h> using namespace std; int maxtransformation(int x){    int steps = 0;    // बिट्स की संख्या गिनना    while (x) {       steps += x & 1;       x >>= 1;    }    return steps; } int main(){    int x = 7;    cout<<"The maximum number of steps to transform 0 to "<<x<<" with bitwise AND are "<<maxtransformation(x);    return 0; }

आउटपुट

The maximum number of steps to transform 0 to 7 with bitwise AND are 3

  1. - C++ में वर्ग मैट्रिक्स में अधिकतम और न्यूनतम

    समस्या कथन n*n क्रम का एक वर्ग मैट्रिक्स दिया गया है, मैट्रिक्स से अधिकतम और न्यूनतम ढूंढें। उदाहरण यदि दिया गया मैट्रिक्स है: {{15, 17, 19}, {5, 1, 7}, {14, 5, 16}} तब न्यूनतम संख्या 1 है और अधिकतम संख्या 19 है। एल्गोरिदम मैट्रिक्स की एक पंक्ति की शुरुआत से एक तत्व और उसी पंक्ति के अंत से दूसरा

  1. - C++ में बिटवाइज़ AND क्या है?

    बिटवाइज़ AND ऑपरेटर (&) पहले ऑपरेंड के प्रत्येक बिट की तुलना दूसरे ऑपरेंड के संबंधित बिट से करता है। यदि दोनों बिट्स 1 हैं, तो संबंधित परिणाम बिट 1 सेट होता है। अन्यथा, संबंधित परिणाम बिट 0 सेट होता है। बिटवाइज़ इन्क्लूसिव AND ऑपरेटर के दोनों ऑपरेंड्स इंटीग्रल प्रकार के होने चाहिए। उदाहरण के लि

  1. - पायथन में अधिकतम बिटवाइज AND और बिटवाइज OR वाले सबसीक्वेंस खोजें

    मान लीजिए हमारे पास n तत्वों का एक ऐरे है, हमें ऐरे के दो सबसीक्वेंस चुनकर अधिकतम योग दिखाना है (वे भिन्न हो सकते हैं या नहीं) ताकि पहले सबसीक्वेंस के सभी तत्वों के बिटवाइज AND ऑपरेशन और दूसरे सबसीक्वेंस के सभी तत्वों के बिटवाइज OR ऑपरेशन का योग अधिकतम हो।तो, यदि इनपुट A = {4, 6, 7, 2} जैसा है, तो आ