题目1176:树查找

来源:互联网 发布:关于网络诈骗的新闻 编辑:程序博客网 时间:2024/05/29 05:12

// 直接用二叉树的性质即可。。。需要知道log是以10为底,需要转换为以2为底,

// 以及向下取整的函数double floor(double), 令向上取整的函数是double ceil(double)

#include<stdio.h>

#include<cmath>
double lg2(double n)  // 求以2为底的对数
{
   return log(n)/log(2);
}
int main()
{
    int n,buf[1001],deep[1001];
    while(scanf("%d",&n)!=EOF){
        for(int i=1;i<=n;i++){
             scanf("%d",&buf[i]);
             deep[i]=(int)floor(lg2(i))+1;
        }
        int d;
        scanf("%d",&d);
        int flag=0; 
        for(int i=1;i<=n;i++){
            if(deep[i]==d) {
                if(flag==0)printf("%d",buf[i]);
                else printf(" %d",buf[i]); 
                flag=1;   
            }    
        }   
        if(flag==0) printf("EMPTY");
        printf("\n");
    }
    return 0;    
0 0
原创粉丝点击