আমাদের একটি সংখ্যা num দেওয়া আছে। কাজ হল ১ যোগ করার পর বাইনারি রিপ্রেজেন্টেশনে কতগুলো বিট পরিবর্তন হয়েছে তা গণনা করা।
বাইনারি রিপ্রেজেন্টেশন হল সংখ্যাকে ০ এবং ১-তে রূপান্তর করা। বিটwise যোগফল টেবিল:
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 (1 বিট ক্যারি)
উদাহরণ:
ইনপুট: num = 10 → আউটপুট: count is: 1
ব্যাখ্যা: 10-এর বাইনারি = 1010, ১ যোগ করলে 1011। শুধু ১টি বিট পরিবর্তন।
ইনপুট: num = 5 → আউটপুট: count is: 2
ব্যাখ্যা: 5-এর বাইনারি = 101, ১ যোগ করলে 110। ২টি বিট পরিবর্তন।
অ্যালগরিদম
ইনপুট নিন int num-এ
XOR = num ^ (num + 1) করুন (XOR-এ ১ থাকা বিটগুলোই পরিবর্তন হয়েছে)
__builtin_popcount(XOR) দিয়ে সেট বিটের সংখ্যা গুনুন
ফলাফল রিটার্ন করুন
প্রোগ্রাম
#include <iostream>
using namespace std;
// পরিবর্তিত বিটের সংখ্যা বের করার ফাংশন
int changedbit(int n) {
int XOR = n ^ (n + 1);
// XOR-এ সেট বিটের সংখ্যা গণনা
int count = __builtin_popcount(XOR);
return count;
}
int main() {
int n = 10;
cout << "count is: " << changedbit(n);
return 0;
}
আউটপুট
count is: 1