এখানে আমরা দেখব একটি সংখ্যা ব্ল্যাক কি না। একটি সংখ্যাকে অন্ধকার বলা হয় যদি এটি একটি ধনাত্মক সংখ্যা 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"; }
আউটপুট
No Yes