3 条题解
-
0
位运算的性质,n位2的整数幂减一以后一定 得到一个全为1的n-1位二进制数,再与运算一下若为0则说明这是一个2的整数幂,不为0则说明不是,比如6的二进制为101,减去1为100,与运算得到4,8的二进制为1000,减去1为111,与运算为0,注意&的优先级低于==,所以写成(i&(i-1))==0
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int l,r; cin>>l>>r; int ans=0; for(int i=l;i<=r;i++){ if((i&(i-1))==0)ans++; } cout<<ans; return 0; }
信息
- ID
- 96
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 入门
- 标签
- 递交数
- 101
- 已通过
- 58
- 上传者