কম্পিউটার

বিটওয়াইজ এবং C++-এ 0 থেকে X রূপান্তরিত করার সর্বোচ্চ ধাপ


এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা X দেওয়া হয়েছে৷ আমাদের কাজ হল 0 থেকে X তে রূপান্তরিত করার জন্য নেওয়া পদক্ষেপগুলির মোট সংখ্যা খুঁজে বের করা৷

বৈধ রূপান্তর − একটি ধাপ গণনা করা হয় যখন একটি রূপান্তর A থেকে B তে সংঘটিত হয়। রূপান্তরটি সংঘটিত হওয়ার শর্ত হল A !=B এবং A &B =A (&বিটওয়াইজ AND)। সুতরাং, 1 ধাপ A থেকে B তে রূপান্তরিত হচ্ছে এবং আমাদের একটি প্রোগ্রাম তৈরি করতে হবে যা 0 থেকে X রূপান্তর করার জন্য সর্বাধিক সংখ্যক ধাপ গণনা করবে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,

ইনপুট − X =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-এ রূপান্তরিত করার সর্বোচ্চ ধাপ দেবে।

A থেকে B তে রূপান্তরে, A এর সমস্ত সেট বিট B তে সেট করা উচিত, তবে বিপরীতটি প্রয়োজনীয় নয়। সুতরাং, ন্যূনতম রূপান্তর 1 হতে পারে কারণ 0-তে কোনও সেট বিট নেই যা ক্ষুদ্রতম রূপান্তরকে সরাসরি করে।

আমরা যে উদাহরণটি নিয়েছি তাতে দেখতে পাচ্ছি, সংখ্যার বাইনারি রূপান্তর এবং তাদের বিটওয়াইজ ANDs।

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম -

//বিটওয়াইজ এবং C++ এ 0 থেকে X রূপান্তর করার জন্য সর্বাধিক ধাপগুলি খুঁজে বের করার প্রোগ্রাম

#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++ এ একটি অ্যারেতে একটি জোড়ার সর্বোচ্চ বিটওয়াইজ এবং মান

  2. C++ এ একটি বর্গ ম্যাট্রিক্সে সর্বোচ্চ এবং সর্বনিম্ন

  3. Bitwise এবং C++ এ কি?

  4. পাইথনে সর্বাধিক Bitwise AND এবং Bitwise OR সহ পরবর্তীগুলি খুঁজুন