কম্পিউটার

C++ এর চরম অবস্থানে বিট অদলবদল করে একটি প্রদত্ত স্বাক্ষরবিহীন সংখ্যাকে সর্বাধিক করুন


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

একটি সংখ্যা দেওয়া হলে বিটগুলিকে এর চরম অবস্থানে অদলবদল করে এটিকে সর্বাধিক করুন যেমন প্রথম এবং শেষ অবস্থানে, দ্বিতীয় এবং দ্বিতীয় শেষ অবস্থানে এবং আরও অনেক কিছু৷

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

00000000 00000000 00000000 00001000

চরম অবস্থানে বিট অদলবদল করার পর সংখ্যা −

হয়ে যায়
00010000 00000000 00000000 00000000 এবং এর দশমিক সমতুল্য হল:268435456

অ্যালগরিদম

<পূর্ব>1. মূল নম্বর 2 এর একটি অনুলিপি তৈরি করুন। যদি কম তাৎপর্যপূর্ণ বিট 1 হয় এবং আরও তাৎপর্যপূর্ণ বিট 0 হয় তাহলে শুধুমাত্র বিট থেকে বিটগুলিকে অদলবদল করুন, যতক্ষণ না কম গুরুত্বপূর্ণ বিটের অবস্থান আরও উল্লেখযোগ্য বিটের অবস্থান3 থেকে কম না হয় ততক্ষণ পর্যন্ত প্রক্রিয়াটি চালিয়ে যান। নতুন নম্বর ফেরত দিন

উদাহরণ

#include #ull unsigned long longusing namespace std;ull getMaxNumber(ull num){ ull origNum =num; int bitCnt =sizeof(ull) * 8 - 1; int cnt =0; for(cnt =0; cnt > cnt) &1; int n =(origNum>> bitCnt) &1; যদি (m> n) { int x =(1 <
 

            
  1. একটি প্রদত্ত সংখ্যা C++ এ তার সংখ্যার ফ্যাক্টরিয়ালের যোগফলকে ভাগ করে কিনা তা পরীক্ষা করুন

  2. একটি প্রদত্ত মোবাইল নম্বর C++ এ অভিনব কিনা তা পরীক্ষা করুন

  3. একটি সংখ্যা প্রদত্ত বেসে আছে নাকি C++ তে নেই তা পরীক্ষা করুন

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