可以观察到0-9的所有子集都能恰组成一个满足题目条件的数字,所以共有1022个数{除空集和0}
方法就是二元枚举,找出所有数然后排序。
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
vector<ll> v;
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int k; cin >> k;
for (int i = 0; i < 1 << 10; i++) // i<1024,
{
ll res = 0;
for (int j = 9; j >= 0; j--)
{
if ((i >> j) & 1) res = res * 10 + j;
//判断是否这个数字存在。
}
if (res > 0) v.push_back(res);
}
sort(v.begin(), v.end());
cout << v[k - 1] << endl;
}
如果这个题解对你有帮助的话,希望能够给个免费的点赞,谢谢啦
- 321 Beginner Searcher AtCoder Contest321 beginner searcher atcoder beginner atcoder contest 321 321 beginner atcoder contest contest programming beginner atcoder beginner atcoder contest 296 beginner atcoder contest 295 beginner atcoder contest abcde beginner atcoder contest 335 beginner atcoder contest 328 beginner atcoder contest 334