#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
unsigned long long n,k;
cin>>n>>k;
k++;
unsigned long long l=pow(2,n);
for(int i=n;i>=1;i--)
{
if(i==1)
{
cout<<k-1;
return 0;
}
unsigned long long p=l/2;
if(k<=p)cout<<0;
else
{
cout<<1;
k=l-k+1;
}
l=p;
}
return 0;
}
开unsigned long long还是见了祖宗
但是题解说可以过,不知道哪里出了问题。
输入:64 18446744073709551615
正确输出:1000000000000000000000000000000000000000000000000000000000000000
我的输出:0*n 18446……
一看就是超了