সমস্যা বিবৃতি
একটি পরিসর [L, R] দেওয়া হলে, আমাদের এই পরিসরে দুটি পূর্ণসংখ্যা খুঁজে বের করতে হবে যাতে তাদের XOR দুটি পূর্ণসংখ্যার সম্ভাব্য সকল পছন্দের মধ্যে সর্বাধিক হয়
যদি প্রদত্ত ব্যাপ্তি L =1 এবং R =21 হয় তাহলে আউটপুট হবে 31 কারণ −31 হল 15 এবং 16 এর XOR এবং এটি সীমার মধ্যে সর্বাধিক।
অ্যালগরিদম
<পূর্ব>1. (L^R) মান 2 গণনা করুন। এই মানের সবচেয়ে উল্লেখযোগ্য বিট থেকে চূড়ান্ত ফলাফল পেতে সমস্ত 1s যোগ করুনউদাহরণ
#includeনেমস্পেস ব্যবহার করে std;int getMaxXOR(int L, int R){ int LXR =L^R; int msbPos =0; যখন (LXR) { msbPos++; LXR>>=1; } int maxXOR =0; int দুই =1; যখন (msbPos--) { maxXOR +=দুই; দুই <<=1; } রিটার্ন maxXOR;}int main(){int L =1; int R =21; cout <<"ফলাফল =" < আউটপুট
যখন আপনি উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেফলাফল =31