#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; } } } }
缝缝补补,思路有点乱