বৈব 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