কম্পিউটার

C++ ব্যবহার করে শুধুমাত্র L-th এবং R-th সূচকের মধ্যে সেট বিট সহ সংখ্যাটি খুঁজুন


প্রদত্ত সমস্যাটিতে আমাদের এমন একটি সংখ্যার মান খুঁজে বের করতে হবে যেখানে প্রদত্ত পরিসর L, R-এর মধ্যে সমস্ত সেট বিট রয়েছে। উদাহরণস্বরূপ −

Input: L = 1, R = 5
Output: 62
Explanation: representation of given L and R in binary form is 0..0111110

Input: L = 1, R = 4
Output: 30
Explanation: representation of given L and R in binary form is 0..11110

সমাধান খোঁজার পদ্ধতি

প্রদত্ত সমস্যাটিতে, আমরা দুটি পন্থা নিয়ে আলোচনা করতে যাচ্ছি, ব্রুট ফোর্স এবং দক্ষ পন্থা৷

ব্রুট ফোর্স

এই পদ্ধতিতে, আমরা কেবল প্রদত্ত রেঞ্জের মধ্য দিয়ে যেতে যাচ্ছি এবং প্রদত্ত রেঞ্জে 2 এর সমস্ত শক্তি যোগ করতে যাচ্ছি, এবং এটিই হবে আমাদের উত্তর৷

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
int main() {
   int L = 1, R = 3; // the given range
   int ans = 0; // our answer
   for(int i = L; i <= R; i++) // traversing through the whole range
      ans += pow(2, i); // adding values to the answer.
   cout << ans << "\n";
}

আউটপুট

14

এই পদ্ধতিতে, আমরা কেবল পরিসরের মধ্য দিয়ে যাচ্ছি এবং পরিসীমার মধ্যে 2 নম্বরের শক্তি যোগ করছি। এই প্রোগ্রামটিতে O(N) এর সময় জটিলতা রয়েছে , যেখানে N হল আমাদের পরিসরের আকার। কিন্তু আমরা প্রদত্ত প্রশ্নে বিটের জ্ঞান প্রয়োগ করে সময়ের জটিলতা আরও উন্নত করতে পারি।

দক্ষ পদ্ধতি

এই পদ্ধতিতে, আমরা কেবল একটি সূত্র তৈরি করব যা আমাদের জন্য আমাদের উত্তর গণনা করবে।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
int main() {
   int L = 1, R = 3; // the given range
   int ans = 0; // our answer
   for(int i = L; i <= R; i++) // traversing through the whole range
      ans += pow(2, i); // adding values to the answer.
   cout << ans << "\n";
}

আউটপুট

14

এই পদ্ধতিতে, আমরা আমাদের উত্তর গণনার জন্য একটি সূত্র তৈরি করি।

উপরের কোডের ব্যাখ্যা

আপনি জানেন যে, আমাদের প্রদত্ত রেঞ্জে সেট বিট দিয়ে সংখ্যা গণনা করতে হবে, তাই এই পদ্ধতিতে, আমরা এমন একটি সংখ্যা খুঁজে পাই যার সমস্ত বিট 0 থেকে R পর্যন্ত সেট করা আছে। তারপর আমাদের এমন একটি সংখ্যা বিয়োগ করতে হবে যাতে সমস্ত বিট রয়েছে। 1 থেকে (L-1) পর্যন্ত সেট করুন এবং এইভাবে আমরা এই পর্যবেক্ষণটি প্রণয়ন করি। প্রদত্ত কোডের সামগ্রিক সময়ের জটিলতা হল O(1) যা ধ্রুব সময়ের জটিলতা যার মানে আমরা ধ্রুব সময়ে যেকোনো উত্তর গণনা করতে পারি।

উপসংহার

এই নিবন্ধটি "শুধুমাত্র L-th এবং R- সূচকের মধ্যে সেট বিট সহ সংখ্যার জন্য একটি প্রোগ্রাম তৈরি করবে।" এছাড়াও আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি ( স্বাভাবিক এবং দক্ষ) শিখেছি যার মাধ্যমে আমরা এই সমস্যার সমাধান করেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনার এই নিবন্ধটি সহায়ক হবে৷


  1. C++ ব্যবহার করে প্রদত্ত এক প্রান্ত এবং মধ্য দিয়ে একটি রেখার অন্য প্রান্ত বিন্দু খুঁজুন

  2. C++ ব্যবহার করে একটি সেটে রিফ্লেক্সিভ রিলেশনের সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে K বিবর্তনের সাথে স্থানান্তরের সংখ্যা নির্ণয় করুন

  4. C++ ব্যবহার করে ফুটবলে পেন্টাগন এবং হেক্সাগনের সংখ্যা খুঁজুন