C - 321-like Searcher

发布时间 2023-09-24 09:45:02作者: 不o凡

题意:给定一个数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;
}