题解 | 二叉树
#include<iostream>
using namespace std;
long long calNum(int m, int n){
if(m > n){
return 0;
}else if (m <= n && 2*m > n){// 叶子节点
return 1;
} else {
return 1 + calNum(2*m, n) + calNum(2*m + 1, n);
}
}
int main(){
// 输入数据
int m, n;
while(cin>>m>>n){
if(m == 0 && n == 0){
break;
}
cout<<calNum(m, n)<<endl;
}
}
查看58道真题和解析