题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=63
解题思路:每只猴子的下落很有规律,对于一个分叉来说,所有奇数编号猴子落在左边,所有偶数猴子落在右边,并且这个过程是递归的,就是说每一次分叉,对所有到达该分叉的猴子编号的话,奇数想做,偶数向右。
1.
#include<iostream>
02.
using
namespace
std;
03.
04.
int
main()
05.
{
06.
int
d,i,k;
07.
while
(cin>>d>>i && (d+i) !=0)
08.
{
09.
k=1;
10.
for
(
int
j=0;j<d-1;j++)
11.
if
(i%2) {k=k*2;i=(i+1)/2;}
12.
else
{k=k*2+1;i /=2;}
13.
cout<<k<<endl;
14.
15.
}
16.
}