24.最多的数
描述:

思路:
这里采用位运算的方式,让初始值为L,然后逐步来将这个初始值的每一位改为1,同时满足改为1后的值要小于等于R。
代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long q,l,r;
cin >> q;
while(q--){/* */
cin >> l >>r ;
long long ans = l,cnt = 0;
for(int i = 0;i<=40;i++){
if((1LL << i)&ans) cnt++;
else if((ans|(1LL<<i)) <= r){
ans |= (1LL << i);
cnt++;
}
}
cout << ans << " " << cnt << endl;
}
return 0;
}

浙公网安备 33010602011771号