#include <iostream> using namespace std; #include<vector> #include<algorithm> vector<string>q; //x表示所处行 y表示所处列 int n; string res; bool co[20],dg[20],udg[20];////分别表示行、对角线、反对角线上位置标记 void dfs(int x){ if(x==8) { //cout<<res<<endl; q.push_back(res); } for(int i=0;i<8;i++){//x为行 i为列 if(!co[i]&&!dg[i+x]&&!udg[x-i+8]){ co[i]=dg[i+x]=udg[x-i+8]=true; res+=(i+1+'0'); dfs(x+1); res.pop_back(); co[i]=dg[i+x]=udg[x-i+8]=false; } } } int main() { cin>>n; dfs(0); // sort(q.begin(),q.end()); cout<<q[n-1]; } // 64 位输出请用 printf("%lld")