#include <iostream>#include<string>#include<vector>#include <map>#include <algorithm>
using namespace std;
int main() {
map<int, int> m;
vector<int> res;
int n;
int temp;
cin >> n;
while (n--) {
cin >> temp;
m[temp] = 0;
}
for (auto it = m.begin(); it != m.end(); it++) {
temp = it->first;
while (temp != 1) {
if (temp % 2 == 0)
temp = temp / 2;
else
temp = (3 * temp + 1) / 2;
if (m.count(temp) == 1)
m[temp] = 1;
}
}
for (auto it = m.begin(); it != m.end(); it++) {
if (it->second == 0)
res.push_back(it->first);
}
reverse(res.begin(), res.end());
cout << res[0];
for (int i = 1; i < res.size(); i++) {
cout << " " << res[i];
}
cout << endl;
return 0;
}
复制代码
python3代码
defmain():
n = input()
num_str = input().split(' ')
res={}
result =[]
for i in num_str:
if(int(i) notin res.keys()):
res[int(i)] = 0for i in num_str:
i = int(i)
while i !=1:
if(i%2==0):
i = i/2else:
i = (3*i+1)/2if(i in res.keys()):
res[i] = 1for i in res:
if(res[i] == 0):
result.append(i)
result.sort(reverse=True)
for i ,value in enumerate(result):
if(i!=0):
print(" ",end='')
print(value,end='')
main()
复制代码