আমাদেরকে একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া হয়েছে। লক্ষ্য হল N এর থেকে কম বা সমান সংখ্যাগুলি গণনা করা যেগুলির বাইনারি উপস্থাপনায় সমস্ত 1 আছে৷ যেমন 1 হল 1, 3 হল 11, 7 হল 111, 15 হল 1111... এভাবেই৷
যদি আমরা সংখ্যা দেখি তাহলে সবগুলোই 2i-1। যেখানে আমি 1 থেকে শুরু করি। n এর চেয়ে কম এই জাতীয় সংখ্যা পরীক্ষা করতে। আমরা তুলনা করব যদি 2i-1<=n. তারপর সংখ্যা বৃদ্ধি।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − N=15
আউটপুট − বাইনারিতে 1 এর সমস্ত সংখ্যা রয়েছে:4
ব্যাখ্যা − একই মৌলিক সংখ্যার যোগফল হিসাবে সংখ্যাগুলি − সংখ্যাগুলি হবে 1 3 7 15
ইনপুট − N=50
আউটপুট − বাইনারিতে সমস্ত 1 আছে এমন সংখ্যা :5
ব্যাখ্যা − একই মৌলিক সংখ্যার যোগফল হিসাবে সংখ্যা −
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
আমরা একটি ধনাত্মক পূর্ণসংখ্যা N..
নিই -
ফাংশন allOnes(int n) ইনপুট হিসাবে n নেয় এবং বাইনারি উপস্থাপনায় 1 এর সমস্ত সংখ্যা প্রদান করে।
-
এই ধরনের সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনাকে 0 হিসাবে নিন..
-
লুপ ব্যবহার করে i=1 থেকে i<=n এ যাত্রা করুন।
-
প্রতিটি i এর জন্য, যদি pow(2,i)-1 n এর থেকে কম বা সমান হয়। সংখ্যা বৃদ্ধি।
-
লুপের শেষে ফলাফল হিসাবে গণনা ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int allOnes(int n){ int count = 0; for(int i=1;i<=n;i++){ if(n>=pow(2,i)-1){ count++; //cout<<" "<<pow(2,i)-1; } } return count; } int main(){ int N=23; cout <<endl<< "Number having all 1's in binary : "<<allOnes(N); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেNumber having all 1's in binary : 4