您的位置:首页 > 其它

题目1113:二叉树

2014-02-23 16:38 253 查看
// 这虽然是二叉树,但是直接用公式求更简单些!

#include<stdio.h>

#include<cmath>

int main()

{

long long n,m,left,count;

while(scanf("%lld%lld",&m,&n)!=EOF && m!=0 && n!=0){

long long count=0;

int i=0;

left=m;

while(m<=n){

count+=int(pow(2.0,i++)); // 新增结点数

m=m*2+1; // 求左子树最大可达到的值

left*=2; // 求左子树最小可达到的值

}

while(left<=n){ // 求又子树最大值和左子树最大值的差值

count++; left++;

}

printf("%lld\n",count);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: