如题
求助qwq
Code:
#include<bits/stdc++.h>
using namespace std;
vector<vector<int> >q,t;
vector<int> p;int n,cnt;
inline bool check(vector<int> x){
int T,t,ln=x.size()-1,p=ln;
vector<int> tmp=x;
for(int i=0;i<=ln;++i){
if((x[0]&1)!=tmp[i])return 0;
T=0;
for(int j=p;~j;--j){
t=(T*10+x[j])&1;
x[j]=(T*10+x[j])>>1;
T=t;
}
for(;!x[p];--p);
}
return 1;
}
inline void print(vector<int> tmp){
for(int i=tmp.size()-1;~i;--i)putchar((char)(tmp[i]+'0'));
putchar('\n');
}
inline void go(){
p.clear();p.push_back(0);q.push_back(p);
p.clear();p.push_back(1);q.push_back(p);
for(;;){
t=q;
q.clear();
for(vector<int> p:t){
vector<int> tmp=p;tmp.push_back(0);
if(check(tmp))q.push_back(tmp);
}
for(vector<int> p:t){
vector<int> tmp=p;tmp.push_back(1);
if(check(tmp)){
if(++cnt==n){
print(tmp);
return;
}
q.push_back(tmp);
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin>>n;
if(n==1)return puts("1")*0;
--n,go();
return 0;
}