কম্পিউটার

C++ এ বিটগুলিকে পুনর্বিন্যাস করে সংখ্যাটি সর্বাধিক করুন


সমস্যা বিবৃতি

একটি স্বাক্ষরবিহীন সংখ্যা দেওয়া হলে, প্রদত্ত স্বাক্ষরবিহীন সংখ্যার বিটগুলি ব্যবহার করে তৈরি করা যেতে পারে এমন সর্বাধিক সংখ্যাটি খুঁজুন

যদি ইনপুট সংখ্যা 8 হয় তবে এর বাইনারি উপস্থাপনা হল−

0000000000000000000000000001000

এটিকে সর্বাধিক করার জন্য MSB 1 এ সেট করুন। তারপর সংখ্যাটি 2147483648 হবে যার বাইনারি উপস্থাপনা হল−

1000000000000000000000000000000

অ্যালগরিদম

<পূর্ব>1. একটি প্রদত্ত সংখ্যা2 এর বাইনারি উপস্থাপনায় সেট বিটের সংখ্যা গণনা করুন। ন্যূনতম উল্লেখযোগ্য সেট বিট 3 সহ একটি সংখ্যা খুঁজুন। (32 – n) দ্বারা বাম সংখ্যাটি স্থানান্তর করুন

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;unsigned getMaxNumber(unsigned num){ int n =__builtin_popcount(num); if (n ==32) { ফিরতি সংখ্যা; } স্বাক্ষরবিহীন ফলাফল =(1 <
 

            
  1. C++ এ arr[i]*i এর যোগফল সর্বাধিক করুন

  2. C++ এ p, q এবং r দৈর্ঘ্যের সেগমেন্টের সংখ্যা সর্বাধিক করুন

  3. C++-এ একটি অ্যারের মধ্যম সর্বোচ্চ করুন

  4. C++ এ k সেট বিট সহ একটি সংখ্যাকে সর্বাধিক করার জন্য ন্যূনতম ফ্লিপস প্রয়োজন।