通过C ++中的给定运算可以使2的幂数的计数
给我们一个正整数数组。目的是找出最多可以加1的数的个数。
我们将使用log2(i)检查该数字是否为2的幂或通过加1可以变为2的幂。如果是,则增加计数。
让我们通过示例来理解。
输入−arr[]={1,3,2,5,6},
输出-可以变成2的3的幂的数字计数
说明-1+1=2→21,3+1=4→22,2=21其他将变成5+1=6,6+1=7
输入−arr[]={2,4,8,16},
输出-可以成为2的4的幂的数字计数
说明-所有4个数字已经是2的幂。
以下程序中使用的方法如下
我们采用以随机正数初始化的整数数组arr[]。
函数powofTwo(intarr[],intn)将一个数组及其长度作为输入,并返回一个等于或可以为2的幂的数字计数。
将初始计数设为0。
从i=0遍历数组到i<n。
对于每个元素,检查floor(log2(arr[i]))==ceil((log2(arr[i]))或floor(log2(arr[i]+1))==ceil((log2(arr[i]+1)),如果在两种情况下均以true递增计数。
返回计数作为最终结果。
示例
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int powofTwo(int arr[],int n){
int count=0;
for(int i=0;i<n;i++){
if( floor(log2(arr[i])) == ceil(log2(arr[i])) )
{ count++; }
else{
++arr[i];
if( floor(log2(arr[i])) == ceil(log2(arr[i])) )
{ count++; }
}
}
return count;
}
int main(){
int Arr[]={ 5,6,9,3,1 };
int len=sizeof(Arr)/sizeof(Arr[0]);
cout<<endl<<"Count of numbers with power of 2 possible: "<<powofTwo(Arr,len);
return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
Count of numbers with power of 2 possible: 2