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;
}
posted @ 2024-09-07 15:24  alone_qing  阅读(66)  评论(0)    收藏  举报