#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;
}
网友评论