检查给定数字在C ++中是否稀疏

在本节中,我们将看到如何检查数字是否稀疏。如果数字的二进制表示形式不具有两个或两个以上的连续1,则称数字为稀疏。假设数字是72,即01001000。这里没有两个或多个连续的1。

要检查数字是否稀疏,我们将数字取为n,然后将该数字向右移一位,然后执行按位与。如果结果为0,则为稀疏数,否则为稀疏数。

示例

#include <iostream>
using namespace std;
bool isSparseNumber(int n) {
   int res = n & (n >> 1);
   if(res == 0)
      return true;
   return false;
}
int main() {
   int num = 72;
   if(isSparseNumber(num)){
      cout << "This is sparse number";
   } else {
      cout << "This is not sparse number";
   }
}

输出结果

This is sparse number