এই টিউটোরিয়ালে, আমরা এমন একটি প্রোগ্রাম লিখতে যাচ্ছি যা m 1 এবং m - 1 0 এর সাথে সবচেয়ে বড় সংখ্যা খুঁজে বের করে।
আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷
৷- দুটি ভেরিয়েবল বিট এবং ফলাফল যথাক্রমে 2 এবং 1 দিয়ে শুরু করুন।
- একটি লুপ লিখুন যা 1 থেকে n পর্যন্ত পুনরাবৃত্তি করে।
- pow(2, bits) - 1) * (pow(2, bits - 1) দিয়ে পুনরাবৃত্তিকারী পরিবর্তনশীল মান আপডেট করুন।
- যদি পুনরাবৃত্তিমূলক ভেরিয়েবলটি n-এর থেকে কম হয়, তাহলে i দিয়ে ফলাফল আপডেট করুন।
- বিট সংখ্যা বৃদ্ধি করুন।
- রিটার্ন রিটার্ন।
উদাহরণ
আসুন কোডটি দেখি।
#include <bits/stdc++.h>
using namespace std;
long long getTheNumber(long long n) {
long bits = 2;
long long result = 1;
long long i = 1;
while (i < n) {
i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1));
if (i < n) {
result = i;
}
bits++;
}
return result;
}
int main() {
long long n = 654;
cout << getTheNumber(n) << endl;
return 0;
} আউটপুট
আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।
496
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।