算法
(暴力枚举) $O(n^2)$
思路
这题思路是递归,根据题意就可以很明显感觉到,你要求第n位的,就先把n-1位的求出来 边界是k=1 返回 值
C++ 代码
``#include[HTML_REMOVED]
using namespace std;
unsigned long long n,cnt;
unsigned long long k,a[100];
unsigned long long pow(unsigned long long n)
{
unsigned long long s=1;
for(int i=1;i<=n;i)
{
s*=2;
}
return s;
}
void dfs(unsigned long long n,unsigned long long k)
{
if(n==1)
{
if(k==1) a[cnt]=1;
else a[cnt]=0;
return;
}
if(k>=pow(n)/2)
dfs(n-1,(pow(n)-k-1));
else dfs(n-1,k);
if(k>=pow(n)/2) a[cnt]=1;
else a[++cnt]=0;
return;
}
int main()
{
cin>>n>>k;
dfs(n,k);
for(int i=cnt;i>0;i–) cout<<a[i];
return 0;
}