কম্পিউটার

C++ এ প্রদত্ত ক্রিয়াকলাপের মাধ্যমে সংখ্যার গণনা যাকে 2 এর শক্তি করা যেতে পারে


আমাদের ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়েছে৷ লক্ষ্য হল সংখ্যাগুলির গণনা খুঁজে বের করা যেগুলিকে সর্বাধিক একবার 1 যোগ করে দুটির শক্তি করা যেতে পারে৷

আমরা log2(i) ব্যবহার করে পরীক্ষা করব যে সংখ্যাটি দুটির শক্তি বা এটিতে 1 যোগ করে দুটির শক্তি হতে পারে। যদি হ্যাঁ ইনক্রিমেন্ট কাউন্ট।

উদাহরণ দিয়ে বোঝা যাক।

ইনপুট − arr[]={1,3,2,5,6 },

আউটপুট − সংখ্যার গণনা যা 2:3 এর শক্তিতে পরিণত হতে পারে

ব্যাখ্যা − 1+1=2 → 21 , 3+1=4 → 22 , 2=21 অন্যান্য হয়ে যাবে 5+1=6, 6+1=7

ইনপুট − arr[]={2,4,8,16},

আউটপুট − সংখ্যার গণনা যা 2:4 এর শক্তিতে পরিণত হতে পারে

ব্যাখ্যা − সমস্ত 4টি সংখ্যা ইতিমধ্যেই 2 এর শক্তি।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • আমরা এলোমেলো ধনাত্মক সংখ্যা দিয়ে শুরু করা একটি পূর্ণসংখ্যা অ্যারে অ্যারে নিই।

  • ফাংশন powofTwo(int arr[],int n) একটি অ্যারে এবং এর দৈর্ঘ্য ইনপুট হিসাবে নেয় এবং সংখ্যার একটি গণনা প্রদান করে যেগুলিকে দুটির পাওয়ার বা করা যেতে পারে।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • i=0 থেকে i পর্যন্ত ট্রাভার্স অ্যারে

  • প্রতিটি উপাদানের জন্য তল(log2(arr[i]))==ceil((log2(arr[i])) বা ফ্লোর(log2(arr[i]+1))==ceil((log2(arr[ i]+1)), উভয় ক্ষেত্রেই সত্য বৃদ্ধির গণনা হলে।

  • চূড়ান্ত ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int powofTwo(int arr[],int n){
   int count=0;
   for(int i=0;i<n;i++){
      if( floor(log2(arr[i])) == ceil(log2(arr[i])) )
         { count++; }
      else{
         ++arr[i];
         if( floor(log2(arr[i])) == ceil(log2(arr[i])) )
            { count++; }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 5,6,9,3,1 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   cout<<endl<<"Count of numbers with power of 2 possible: "<<powofTwo(Arr,len);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of numbers with power of 2 possible: 2

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

  2. প্রদত্ত বাইনারি অ্যারের সমস্ত উপসর্গ গণনা করুন যা C++ এ x দ্বারা বিভাজ্য

  3. সমস্ত প্যালিনড্রোম গণনা করুন যা C++ এ একটি প্যালিনড্রোমের বর্গক্ষেত্র

  4. C++ এ প্রদত্ত সংখ্যা পর্যন্ত অ্যারের উপাদানগুলিকে সর্বাধিক করুন