十年OI一场空,不开long long见祖宗。
记得开long long
解法就是在给的n个数中找到是2的整数次幂的数,因为这类数没有奇数因子。
那怎么去找是2的整数次幂的数呢,这里可以往二进制上转
//2的整数次幂有个特点,当他转换成2进制时二进制中只有一个1,并且1后面跟了n个0
//如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1
C++ 代码
//只有2的整数次幂不能被连续表示
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
LL n;
LL ans;
int main(){
cin>>n;
while(n--){
LL a;
cin>>a;
if((a&(a-1))==0)ans++;//判断是不是2的整数次幂
}
cout<<ans;
return 0;
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla