একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া আছে। লক্ষ্য হল N-এর চেয়ে ছোট বা সমান যেসব সংখ্যার বাইনারি রিপ্রেজেন্টেশনে শুধু ১ থাকে, তাদের সংখ্যা বের করা। যেমন ১ হল ১, ৩ হল ১১, ৭ হল ১১১, ১৫ হল ১১১১ ইত্যাদি।
এই সংখ্যাগুলো наблюда করলে সবই 2i - 1 ফর্মের। যেখানে i=1 থেকে শুরু হয়। N-এর চেয়ে ছোট বা সমান এသူবিধ সংখ্যা বের করার জন্য আমরা চেক করি 2i - 1 <= n কিনা। থাকলে কাউন্ট বাড়ান।
ইনপুট: N=15
আউটপুট: বাইনারিতে সব ১ থাকা সংখ্যা: ৪
ব্যাখ্যা: সংখ্যাগুলো হল ১, ৩, ৭, ১৫
ইনপুট: N=50
আউটপুট: বাইনারিতে সব ১ থাকা সংখ্যা: ৫
- একটি ধনাত্মক পূর্ণসংখ্যা N নেওয়া হয়।
allOnes(int n)ফাংশন n নিয়ে বাইনারিতে সব ১ থাকা সংখ্যাগুলির কাউন্ট রিটার্ন করে।- প্রাথমিক count = 0।
- i=1 থেকে i<=n পর্যন্ত লুপ চালানো হয়।
- প্রতিটি i-এর জন্য
pow(2,i)-1 <= nহলে count বাড়ানো হয়। - শেষে count রিটার্ন করা হয়।
#includeusing namespace std; int allOnes(int n){ int count = 0; for(int i=1; i<=n; i++){ if(n >= pow(2,i)-1){ count++; } } return count; } int main(){ int N=23; cout << endl << "বাইনারিতে সব ১ থাকা সংখ্যা: " << allOnes(N); return 0; }
উপরোক্ত কোড রান করলে আউটপুট:
বাইনারিতে সব ১ থাকা সংখ্যা: ৪