不是2的幂次方都能分解
2的幂次方的判断,2的幂次方首位为1,后面都是0,2的幂次方-1,首位为0,后面都是1,两者按位与为0
(x&(x-1))==0,则x为2的幂次方
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ans=0;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
int x=arr[i];
if((x & (x-1))!=0)
{
ans++;
}
}
cout<<ans<<endl;
}

京公网安备 11010502036488号