救救孩子吧!!!
#include<cstdio>
#include<iostream>
using namespace std;
long long n;
unsigned long long pw=1,k;//!!!!!!
void dfs(long long left,long long right,bool vis,long long level)
{
unsigned long long mid=(left+right)>>1;
level++;
if(level>n)//!!!!
return;
if(vis==false)
if(k<=mid)
{
if(level!=1)//!!!
printf("0");
dfs(left,mid,false,level);
}
else
{
if(level!=1)
printf("1");
dfs(mid+1,right,true,level);
}
if(vis==true)
if(k<=mid)
{
if(level!=1)
printf("1");
dfs(left,mid,false,level);
}
else
{
if(level!=1)
printf("0");
dfs(mid+1,right,true,level);
}
}
int main()
{
int i,j;
scanf("%lld",&n);
cin>>k;//不要随便改题意!!!
//找出离他最短的二次幂(暴力)
for(i=1;i<=n;i++)//!!!!!
pw*=2;
cout<<pw<<endl;
if(n==1)//!!!写法注意
{
printf("%d",k);
return 0;
}
if(k<=pw/2)
{
printf("0");
dfs(0,pw-1,false,0);
}
else
{
printf("1");
dfs(0,pw-1,true,0);
}
return 0;
}