zoukankan      html  css  js  c++  java
  • NYOJ 63(小猴子下落)

     

    小猴子下落

    时间限制:3000 ms | 内存限制:65535 KB
    难度:3
     
    描述

    有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开关关闭,小猴子往左走,否则往右走,直到走到叶子结点。

    一些小猴子从结点1处开始往下跑,最后一个小猴儿会跑到哪里呢?

     
    输入
    输入二叉树叶子的深度D,和小猴子数目I,假设I不超过整棵树的叶子个数,D<=20.最终以 0 0 结尾
    输出
    输出第I个小猴子所在的叶子编号。
    样例输入
    4 2
    3 4
    0 0
    样例输出
    12
    7
     
    #include<stdio.h>
    int main()
    {
    	int d,I,i,k;
    	while(scanf("%d%d",&d,&I),d||I)
    	{
    		k=1;
    		for(i=0;i<d-1;++i)/*d层需要判断(d-1)次*/
    			if(I&1) /*通过改变是否为零,知道题意是先走,再改变状态*/
    				k<<=1,I=(I+1)>>1;/*上层节点为k,这相邻下层的左节点
    
    编号为2*k,右节点为(2*k+1),奇数的话左边走(I+1)/2个,右边I/2个*/
    			else 
    				k=(k<<1)+1,I>>=1;
    		printf("%d\n",k);
    	}
    	return 0;
    }        
    

      

  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2521150.html
Copyright © 2011-2022 走看看