यहां हम देखेंगे कि कोई संख्या ब्लेक है या नहीं। एक संख्या को धूमिल कहा जाता है यदि इसे एक सकारात्मक संख्या x के योग के रूप में नहीं दर्शाया जा सकता है और x में बिट काउंट सेट किया जा सकता है। तो x + set_bit_count(x) किसी भी गैर-ऋणात्मक संख्या x के लिए n के बराबर नहीं है।
अवधारणा बहुत सरल है, यदि सेट बिट गिनती + संख्या संख्या के समान नहीं है, तो वह धूमिल है, अन्यथा यह नहीं है।
उदाहरण
#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