题意:给定一个数K,问第K小的数是多少,数字严格按照按321式递减
可知,数最大为987654321,可以暴力枚举
点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define LL long long
vector<LL> ans;
LL s;
void dfs(int x) {
s = s * 10 + x;
ans.push_back(s);
for (int i = x - 1; i >= 0; i--) {
dfs(i);
}
s /= 10;
}
int main() {
LL k;
cin >> k;
for (int i = 9; i >= 0; i--) {
dfs(i);
}
sort(ans.begin(), ans.end());
cout << ans[k];//注意不要k-1
return 0;
}