首页 > 其他 > 详细

HDU 最大的位或

时间:2020-05-07 02:28:06      阅读:67      评论:0      收藏:0      [点我收藏+]

分析

一道思维题,本来想好好写写的,结果调了某道题一天,心情全无,算了吧。

其实挺简单的,首先选区间右端点一定不会差,因为它最高位上有个1,然后开始枚举每一位就行,尽量让每一位都填上1,如果超出了区间范围就不填。

#include<iostream>
#define ll long long
using namespace std;
int main(){
    int T;
    cin>>T;
    while(T--){
        ll l,r;
        cin>>l>>r;
        for(int i=0;(1ll<<i|l)<=r;i++)
            l|=1ll<<i;
        cout<<(l|r)<<‘\n‘;
    }
    return 0;
}

HDU 最大的位或

原文:https://www.cnblogs.com/anyixing-fly/p/12839559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!