AtCoder Beginner Contest 321 C-321-like Searcher

发布时间 2023-10-14 13:54:01作者: 小卷同学

可以观察到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;
}

如果这个题解对你有帮助的话,希望能够给个免费的点赞,谢谢啦