样例输入:

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;
}