bfs欧拉回路
#include<stdio.h>
#include<memory.h>
#define N 1<<16
int fac[20],n,ans[N],num,K,t;
bool used[N][2];
void DFS(int x)
{
for(int i=0;i<2;i++)
if(!used[x][i])
{
used[x][i]=true;
DFS(((x<<1)+i)%fac[n-1]);
ans[num++]=i;
}
}
int main()
{
int i,j;
fac[0]=1;
for(i=1;i<16;i++)
fac[i]=fac[i-1]*2;
while(scanf("%d %d",&n,&K),n)
{
memset(ans,0,sizeof(ans));
memset(used,false,sizeof(used));
num=t=0;
DFS(0);
num+=n-2-K;
for(i=0;i<n;i++)
t=(t<<1)+ans[num-i];
printf("%d\n",t);
}
return 0;
}