題意:給定一個區間,求區間中的一個數,這個數表示成二進制的時候,數字1的個數最多!
如果有多個這樣的數字,輸出最小的那個!
思路:對左區間的這個數lx的二進制 從右往左將0變成1,直到lx的值大于右區間的值rx!


1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 6 using namespace std; 7 8 int main(){ 9 long long a, b; 10 int n; 11 cin>>n; 12 while(n--){ 13 cin>>a>>b; 14 for(long long i=1; (a|i) <= b; i<<=1) 15 a |= i; 16 cout<<a<<endl; 17 } 18 return 0; 19 }
?