NYOJ--63题小猴子的下落

今天在看二叉树,忽然发现有个题是跟二叉树扯点边,就顺手把它做了。回过头来看这个问题,会发现其实这个题真的很简单。当初之所以没有做而是放到了现在,就是自己犯了想当然的错误,认为这个题是一个要用到二叉树的题,自己没有看二叉树,肯定做不出来。就把它放到一边了····实践证明,这是一道水题·····一次直接水过。以前想的很麻烦,但是后来发现其实这个题很简单。思路也很清晰。不断的模拟小猴子在各个结点的选择。先对输入的小猴子的m编号进行判断,如果它是奇数,那么它就是第(m+1)/2个小猴子,那么它的编号就是2k;偶数的话就是第m/2个小猴子。

思路就是这样,下面就是写代码。

原题地址:点击打开链接

代码如下:

#include<iostream>
using namespace std;
int main()
{
	int i,k,n,m;
	while(1)
	{
		cin>>n >>m;
		if(n==0&&m==0)break;
		 k=1;
		for(i=0;i<n-1;i++)//模拟小猴子在结点的选择
			if(m%2){k=k*2;m=(m+1)/2;}
			else {k=k*2+1;m/=2;}
			cout<<k<<endl;
	}return 0;
}



发布了53 篇原创文章 · 获赞 94 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章