递归子问题

#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;
}