我们给定一个正整数N。目标是对小于或等于N且二进制表示均为1的数字进行计数。例如1是1,3是11,7是111,15是1111 ...等等。
如果我们看到数字,那么它们全都是2i-1。我从1开始的地方。要检查小于n的数字。我们将比较2i-1 <= n。然后增加计数。
让我们通过示例来理解。
输入-N = 15
输出-二进制全为1的数字:4
说明-数字为相同质数的总和-数字为1 3 7 15
输入-N = 50
输出-二进制全为1的数字:5
说明-数字为相同质数的总和-
我们取一个正整数N.
函数allOnes(int n)以n作为输入,并以二进制表示形式返回全为1的数字。
对于此类数字,将初始变量计数设为0。
使用for循环从i = 1遍历到i <= n。
对于每个i,如果pow(2,i)-1小于或等于n。增量计数。
在for循环结束时返回计数结果。
#include <bits/stdc++.h>
using namespace std;
int allOnes(int n){
int count = 0;
for(int i=1;i<=n;i++){
if(n>=pow(2,i)-1){
count++;
//cout<<" "<<pow(2,i)-1;
}
}
return count;
}
int main(){
int N=23;
cout <<endl<< "Number having all 1's in binary : "<<allOnes(N);
return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
Number having all 1's in binary : 4