UVA 122 Trees on the level

这个题目与其说是树,不如说是一个找规律的题目。

详情直接看注释和代码。

#include <stdio.h>
#include <string.h>

//这个题目经过转化,可以变成这样的思路,就是我们的这个球是第几个落到这个节点上面来的
//从而,我们可以更加自然地把小球的编号和第几个落的自然而然地建立出一个关系

int main()
{
	int D,I;
	int T;
	scanf("%d", &T);
	T = T + 1;
	while(T--)
	{
		scanf("%d", &D);
		if(D == -1)
			break;
		else
			scanf("%d", &I);
		int i;
		int k = 1;
		for(i = 0; i < D-1; i++)
		{
			if(I % 2 == 1)
			{
				k = 2 * k;
				I = (I + 1) / 2;
			}

			else if(I % 2 == 0)
			{
				k = k * 2 + 1;
				I = I / 2;
			}
		}
		printf("%d\n", k);
	}

}

  

posted @ 2016-10-13 06:22  fzfn5049  阅读(138)  评论(0编辑  收藏  举报