#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <stack>
#include <string>
#include <string.h>
#include <stdio.h>
#include <cmath>
#include <map>
#include <functional>
#include <set>
#include <math.h>
using namespace std;
//1113
int m,n;
int main(){
while(cin>>m>>n && (n||m)){
int sum=0;
if(m<=n) sum=1; //当m<=n时至少本结点满足
int left=2*m, right=2*m+1;
while(n>right){
sum+=(right-left+1);
left*=2;
right=right*2+1;
}
if(n>=left) sum=sum+(n-left+1);
printf("%d\n",sum);
}
return 0;
}
/**************************************************************
Problem: 1113
User: cust123
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
题目1113:二叉树
最新推荐文章于 2022-04-25 11:31:20 发布