书上例题而已
#include <iostream>
#include <cstring>
using namespace std;
const int maxd=20;
int s[1<<maxd];
int main(int argc, char *argv[])
{
int d,i;
scanf("%d%d",&d,&i);
int k,n=(1<<d)-1;
memset(s,0,sizeof(s));
for(int j=0;j<i;j++)
{
k=1;
for(;;)
{
s[k]=!s[k];
k=s[k]?k*2:k*2+1;
if(k>n)break;
}
}
printf("%d\n",k/2);
return 0;
}