একটি 32-বিট আনসাইনড বাইনারি নম্বর দেওয়া হয়েছে, কাজটি হল সেট বিটগুলি গণনা করা, যেমন, এতে '1' রয়েছে৷
উদাহরণস্বরূপ
ইনপুট:
N = 00000000000000100111
আউটপুট:
4
ব্যাখ্যা: প্রদত্ত স্বাক্ষরবিহীন সংখ্যায় উপস্থিত মোট সেট বিট হল 4, এইভাবে আমরা '4' হিসাবে আউটপুট ফেরত দেব।
এই সমস্যা সমাধানের পদ্ধতি
আমরা একটি স্বাক্ষরবিহীন 32-বিট বাইনারি নম্বর দিয়েছি। কাজ হল এতে কতগুলি '1' আছে তা গণনা করা।
প্রদত্ত বাইনারি সংখ্যায় '1'-এর সংখ্যা গণনা করতে, আমরা অন্তর্নির্মিত STL ফাংশন '__builin_popcount(n)' ব্যবহার করতে পারি যা ইনপুট প্যারামিটার হিসাবে একটি বাইনারি নম্বর নেয়।
- ইনপুট হিসাবে একটি বাইনারি সংখ্যা N নিন।
- একটি ফাংশন count1Bit(uint32_t n) ইনপুট হিসাবে একটি 32-বিট বাইনারি সংখ্যা নেয় এবং বাইনারি সংখ্যায় উপস্থিত '1' এর গণনা প্রদান করে।
- ইনবিল্ট ফাংশন __builtin_popcount(n) একটি প্যারামিটার হিসাবে 'n' এর ইনপুট নেয় এবং গণনা প্রদান করে।
উদাহরণ
#include<bits/stdc++.h> using namespace std; int count1bits(uint32_t n) { return bitset < 32 > (n).count(); } int main() { uint32_t N = 0000000010100000011; cout << count1bits(N) << endl; return 0; }
উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,
আউটপুট
4
প্রদত্ত সংখ্যাটিতে, 4 সেট বিট বা '1s' উপস্থিত রয়েছে। সুতরাং, আউটপুট হল '4'।