1005

#include<iostream>
#include<set>
#include<vector>
#include<string>
#include<algorithm>

using namespace std;

set<int> callatz(set<int> &no_key_numbers,unsigned n)
{
    while (1 != n)
    {
        if (0 == n % 2)
        {
            n = n / 2;
        }
        else
        {
            n = (3 * n + 1) / 2;
        }
        no_key_numbers.insert(n);
    }
    return no_key_numbers;
}

int main()
{
    unsigned k;
    unsigned tmp;
    set<int> no_key;
    vector<int> input_numbers;

    cin >> k;
    while (k > 0)
    {
        cin >> tmp;

        input_numbers.push_back(tmp);

        if(no_key.cend()==no_key.find(tmp))
            callatz(no_key,tmp);

        --k;
    }

    string s_out;
    sort(input_numbers.begin(), input_numbers.end());
    for (auto r : input_numbers)
    {
        if (no_key.cend() == no_key.find(r))
            s_out = string(" ")+to_string(r)+ s_out;
    }
    s_out.erase(0, s_out.find_first_not_of(" "));
    cout << s_out;

    system("pause");
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容