用的是一个类似二分的思想,我感觉应该是失精度了/dk
#include<bits/stdc++.h>
//#define int long long
#define ll long long
#define next nxt
#define re register
#define il inline
using namespace std;
int max(int x,int y){return x > y ? x : y;}
int min(int x,int y){return x < y ? x : y;}
int n;
unsigned long long k;
il int read()
{
int f=0,s=0;
char ch=getchar();
for(;!isdigit(ch);ch=getchar()) f |= (ch=='-');
for(; isdigit(ch);ch=getchar()) s = (s<<1) + (s<<3) + (ch^48);
return f ? -s : s;
}
int main()
{
cin >> n >> k;
int flag = 0;
unsigned long long l = 0 , r = pow(2,n)-1 , mid = 0;
while((n--)>0)
{
mid = (l+r) >> 1;
if(k <= mid)
{
cout << flag;
flag = 0;
r = mid;
}
else
{
cout << (flag^1);
flag = 1;
l = mid+1;
}
}
return 0;
}