比赛 2026初中综合小练习 评测结果 AAAAT
题目名称 求集合中最小的N个数 最终得分 80
用户昵称 星辰流浪 运行时间 1.125 s
代码语言 C++ 内存使用 25.29 MiB
提交时间 2026-04-14 20:16:50
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("minvalinset.in","r",stdin);
    freopen("minvalinset.out","w",stdout);
    int n;
    cin >> n;
    set<long long> a;
    priority_queue<long long, vector<long long>, greater<long long>> pq;
    pq.push(1);
    a.insert(1);
    vector<long long> r;
    for (int i = 0; i < n; ++i) {
        long long c = pq.top();
        pq.pop();
        r.push_back(c);
        long long n1 = 2 * c + 1;
        long long n2 = 3 * c + 1;
        if (a.find(n1) == a.end()) {
            pq.push(n1);
            a.insert(n1);
        }
        if (a.find(n2) == a.end()) {
            pq.push(n2);
            a.insert(n2);
        }
    }
    for (int i = 0; i < n; ++i) {
        cout << r[i] << " ";
    }
    return 0;
}