#include <bits/stdc++.h>
using namespace std;
int main() {
long long a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
if(a == 1 || b == 1){
cout<<1<<endl;
}else{
vector<long long> arr,brr;
while(a!=0){
arr.push_back(a);
a/=2;
}
while(b!=0){
brr.push_back(b);
b/=2;
}
reverse(arr.begin(),arr.end());
reverse(brr.begin(),brr.end());
long long i;
for(i =0;i<min(arr.size(),brr.size());i++){
if(arr[i]!=brr[i]){
cout<<arr[i-1]<<endl;
break;
}
}
if(i == min(arr.size(),brr.size())){
cout<<(arr.size()<brr.size()?arr[i-1]:brr[i-1])<<endl;
}
}
}
}
缝缝补补,思路有点乱

京公网安备 11010502036488号