递归子问题
#include <iostream>
using namespace std;
int n,m;
int f(int m){
if(m > n)return 0;
if(2 * m > n && 2 * m + 1 > n){
// 当前节点为叶子节点
// 当前节点的叶子节点大于所有的节点数,这时候m子树只有m这个点
return 1;
}
return f(2 * m) + f(2 * m + 1) + 1;
}
int main(){
while(cin >> m >> n){
cout << f(m) << endl;
}
return 0;
}