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

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


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

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

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

इनपुट - एक्स =7

आउटपुट -3

स्पष्टीकरण -

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

Steps taken will be
Step1: 0(00) to 1(01) , 0!= 1 and 0&1 = 0, transform 00=>01
Step2: 1(001) to 3(011) , 1!= 3 and 1&3 = 1, transform 001=>011
Step3: 3(0011) to 7(0111) , 3!= 7 and 3&7 = 3, tranform 0011=>0111.

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

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

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

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

उदाहरण

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

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

#include <bits/stdc++.h>
using namespace std;
int maxtransformation(int x){
   int steps = 0;
   // counting number of bits
   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}} then Minimum number is 1 and maximum number is 19 एल्गोरिदम मैट्रिक्स से दो तत्वों का चयन करें एक मैट्रिक्स की एक पंक्ति की शुरुआत से

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

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

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

    मान लीजिए कि हमारे पास n तत्वों की एक सरणी है, हमें सरणी के दो बाद के अनुक्रमों को चुनकर अधिकतम योग दिखाना होगा (वे भिन्न हो सकते हैं या नहीं भी हो सकते हैं) ताकि बिट का योग- पहले अनुक्रम के सभी तत्वों का बुद्धिमान और संचालन और दूसरे क्रम के सभी तत्वों का बिट-वार या संचालन अधिकतम है। इसलिए, यदि इनप