可以观察到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;
}
如果这个题解对你有帮助的话,希望能够给个免费的点赞,谢谢啦
标签:Searcher,like,AtCoder,int,res,long,321,include From: https://www.cnblogs.com/expect-999/p/17764093.html