当前位置: 首页 > 工具软件 > 3n1b > 使用案例 >

【PAT B-1005】继续(3n+1)猜想

南宫才英
2023-12-01

【PAT B-1005】继续(3n+1)猜想

C++代码

#include <bits/stdc++.h>
using namespace std;
using gg = long long;  //类型别名
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    gg ni, ai;
    unordered_set<gg> us;  //存储被覆盖的数
    cin >> ni;
    vector<gg> v;
    while (ni--) {
        cin >> ai;
        v.push_back(ai);
        while (ai != 1) {
            if (ai % 2 == 1)
                ai = ai * 3 + 1;
            ai /= 2;
            us.insert(ai);
        }
    }
    sort(v.begin(), v.end(), greater<gg>());  //从大到小排序
    bool first = true;  //标志是否是第一个输出的数字,控制输出空格
    for (auto i : v) {
        if (not us.count(i)) {  // i是关键数
            cout << (first ? "" : " ") << i;
            first = false;
        }
    }
    return 0;
}
 类似资料: