আমাদেরকে পূর্ণসংখ্যার উপাদানগুলির একটি সাজানো না করা অ্যারে দেওয়া হয়েছে এবং কাজটি হল দুটি প্রধান জিনিস গণনা করা।
- একই সংখ্যক সেট বিট সহ উপাদানগুলি
- এছাড়া, একই সেট বিট সহ উপাদানগুলি প্রকৃতিতে সংলগ্ন হওয়া উচিত।
ইনপুট
int arr[] = { 5, 8, 1, 2, 9, 12}
আউটপুট − একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানগুলির সর্বাধিক সংখ্যা হল − 3
ব্যাখ্যা − আমরা একটি অ্যারের উপাদানগুলির জন্য বাইনারি অঙ্কগুলি গণনা করব এবং তাদের সেট বিটগুলি গণনা করব৷
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1 arr[4] = 9 => 1001 => total set bits are -: 2 Arr[5] = 12 => 1100 => total set bits are -: 2
সুতরাং একই সংখ্যক সেট বিট সহ উপাদানগুলি এবং প্রকৃতিতে সংলগ্ন 5, 9 এবং 12৷ তাই একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানগুলির সর্বাধিক সংখ্যা 3
ইনপুট − int arr[] ={ 5, 8, 1, 2}
আউটপুট − একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানগুলির সর্বাধিক সংখ্যা হল − 2
ব্যাখ্যা − আমরা একটি অ্যারের উপাদানগুলির জন্য বাইনারি অঙ্কগুলি গণনা করব এবং তাদের সেট বিটগুলি গণনা করব৷
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1
সুতরাং একই সংখ্যক সেট বিট এবং প্রকৃতিতে সংলগ্ন উপাদানগুলি হল 1 এবং 2৷ সুতরাং একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানগুলির সর্বাধিক সংখ্যা হল 2
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যার প্রকারের অ্যারে উপাদানগুলি ইনপুট করুন
-
সাইজ ফাংশন ব্যবহার করে একটি অ্যারের আকার গণনা করুন এবং এটি ফাংশনে পাস করুন
-
একটি অস্থায়ী ভেরিয়েবল নিন এবং এটি মান 1 এ সেট করুন এবং মান 1 এর সাথে একটি সর্বোচ্চ পরিবর্তনশীলও।
-
টাইপ ভেক্টরের একটি পরিবর্তনশীল vec তৈরি করুন
-
0 থেকে একটি অ্যারের আকার পর্যন্ত লুপটি শুরু করুন
-
"__builtin_popcount(element)" ফাংশন ব্যবহার করে অ্যারের উপাদানগুলির বাইনারি সেট বিট গণনা করুন যা এটিতে পাস করা একটি প্রদত্ত উপাদানের সেট বিটের মোট সংখ্যা ফিরিয়ে দেবে এবং ভেক্টরে গণনা সংরক্ষণ করতে থাকবে৷
-
1 থেকে একটি ভেক্টরের আকার পর্যন্ত লুপ শুরু করুন
-
ভেক্টরের ভিতরে, vec[i+1] =vec[i] কিনা তা পরীক্ষা করুন তারপর temp-এর মান 1 দ্বারা বৃদ্ধি করুন
-
অন্যথায়, তাপমাত্রা সেট করুন 1
-
সর্বোচ্চ ফাংশন ব্যবহার করে টেম্প এবং সর্বোচ্চের মধ্যে সর্বোচ্চ মান বেছে নিয়ে সর্বোচ্চ সেট করুন।
-
সর্বাধিক পরিবর্তনশীল ফেরত দিন
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; //function to calculate maximum same number of bits int maximum_SameBits(int arr[], int size){ int temp = 1; int maximum = 1; vector<int> vec; for (int i = 0; i < size; i++){ vec.push_back(__builtin_popcount(arr[i])); } for (int i = 1; i < vec.size(); i++){ if (vec[i + 1] == vec[i]){ temp++; } else{ temp = 1; } maximum = max(maximum, temp); } return maximum; } int main(){ int arr[] = { 5, 8, 1, 2, 9, 12}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum number of contiguous array elements with same number of set bits are: "<<maximum_SameBits(arr, size); return 0; }
আউটপুট
Maximum number of contiguous array elements with same number of set bits are: 3