考点:完全二叉树的性质
AC代码:
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int d(int x) {//返回层次
int tmp = 1;
while (x > 1) {
tmp++;
x /= 2;
}
return tmp;
}
int main() {
int m; int n;
while (cin >> m >> n) {
if (m == 0 && n == 0)break;
int a = d(m); int b = d(n);
int tmp = 0;
int now = m;
int w = 1;
for (int i = a; i < b; i++) {
now *= 2;
tmp += w;
w *= 2;
}
if (n >= now) {
tmp += min(n - now + 1, w);
}
cout << tmp << endl;
}
}