এখানে আমরা দেখব একটি সংখ্যা ব্লিক (Bleak) কিনা। একটি সংখ্যাকে ব্লিক বলা হয় যদি সেটিকে কোনো পজিটিভ সংখ্যা x এবং x-এর সেট বিট কাউন্টের যোগফল হিসেবে প্রকাশ করা না যায়। অর্থাৎ x + set_bit_count(x) ≠ n, যেকোনো নন-নেগেটিভ x-এর জন্য।
কনসেপ্টটি খুব সহজ: যদি সেট বিট কাউন্ট + সংখ্যা সংখ্যাটির সমান না হয়, তবে সেটি ব্লিক, অন্যথায় নয়।
উদাহরণ কোড
#include <iostream>
using namespace std;
int set_bit_count(int x) {
unsigned int bit_count = 0;
while (x != 0) {
x &= (x - 1);
bit_count++;
}
return bit_count;
}
bool isBleakNumber(int n) {
for (int i = 1; i < n; i++)
if (i + set_bit_count(i) == n)
return false;
return true;
}
int main() {
isBleakNumber(3) ? cout << "Yes\n" : cout << "No\n";
isBleakNumber(4) ? cout << "Yes\n" : cout << "No\n";
return 0;
}
আউটপুট
No Yes