কম্পিউটার টিউটোরিয়াল

সি++-এ একবার ১ যোগ করে ২-এর ঘাত বানানো সম্ভব এমন সংখ্যা গণনা

বৈব nombor er array deiyaa ache. lakshyo hol oi sonkhya gulo gonona jara 1 jog kore 2-r ghot (power of 2) banano somvob. highest 1 bar jog kora jabe.

log2(i) use kore check kora hoy je sonkhya ta 2-r ghot kina athoba 1 jog kore 2-r ghot banano jay kina. jodi hoy taile count barano hoy.

উদাহরণ

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

আউটপুট: ২-এর ঘাত বানানো সম্ভব সংখ্যার গণনা: ৩

ব্যাখ্যা: 1+1=2 → 2¹, 3+1=4 → 2², 2=2¹। বাকি: 5+1=6, 6+1=7 (২-এর ঘাত নয়)।

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

আউটপুট: ২-এর ঘাত বানানো সম্ভব সংখ্যার গণনা: ৪

ব্যাখ্যা: চারটি সংখ্যাই ইতিমধ্যে ২-এর ঘাত।

অ্যাপ্রোচ

  • ইন্টিজার অ্যারে arr[] নেওয়া হয়।
  • powofTwo(int arr[], int n) ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে ২-এর ঘাত বা ১ যোগ করে ২-এর ঘাত বানানো সম্ভব সংখ্যার গণনা রিটার্ন করে।
  • প্রাথমিক count ০।
  • for লুপে i=0 থেকে i
  • নয় হলে arr[i]++ করে আবার যাচাই করা হয়। দুটি কেসেই সত্য হলে count বাড়ানো হয়।

উদাহরণ কোড

#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++-এ দেওয়া সংখ্যা পর্যন্ত অ্যারে উপাদান সর্বাধিক করা