样例输入:
4 2
3 4
10 1
2 2
8 128
16 12345
样例输出:
12
7
512
3
255
36358
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <queue>
using namespace std;
const int MAXD = 20;
int s[1<<MAXD] ;
int main()
{
int D,I;
while( scanf( "%d%d" , &D , &I ) ==2 )
{
memset( s,0,sizeof(s) );
int k , n = ( 1<<D ) - 1;
for( int i=0; i<I ; i++ )
{
k = 1;
for( ; ; )
{
s[k] = !s[k];
k = s[k] ? k*2 : k*2+1;
if( k>n ) break;
}
}
printf( "%d\n" , k/2 );
}
system("pause");
return 0;
}