题目描述

有如上图所示的完全二叉树,该二叉树有n个结点,编号从上向下、从左向右以此为1~n。请问,
编号为m的结点所在的子树,包含了多少个结点?
比如,n = 12,m = 3,则上图中的结点13,14,15以及后面的结点都是不存在的,结点m=3所在
子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。
输入
输出
样例输入
3 7
样例输出
3
参考代码:
#include
using namespace std;
int n,m,s=1;
void down(int x){
if(x*2+1<=n){
s+=2;
down(x*2);
down(x*2+1);
}else if(x*2<=n){
s++;
down(x*2);
}
return;
}
int main(){
cin>>m>>n;
down(m);
cout< return 0;
}