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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章