C++
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
int a[200];
int b[10000]={0};
int k;
cin>>k;
for(int i = 0;i < k;i++){
cin>>a[i];
int p = a[i];
b[p]++;
while(p != 1){
if(p&1){
p = (p*3+1)/2;
b[p]++;
}else{
p /= 2;
b[p]++;
}
}
}
int res[1000];
int flag = 0;
for(int i = 0;i < k;i++){
if(b[a[i]] == 1) {
res[flag++] = a[i];
}
}
sort(res,res+flag);
for(int i = flag-1;i >= 0;i--){
if(i == flag-1) cout<<res[i];
else cout<<' '<<res[i];
}
cout<<endl;
return 0;
}
python,。。。无语了把reverse想成从小到大排序了
n = int(input())
arr = [0 for i in range(10001)]
val = [int(k) for k in input().split()]
for k in val:
arr[k]+=1
while k != 1:
if k % 2 == 0: k /= 2
else: k = (k*3+1)/2
k = int(k)
arr[k]+=1
res = []
for k in val:
if arr[k] == 1: res.append(k)
res.sort()
res.reverse()
if len(res) > 0 :
print(res[0],end="")
for k in res[1:]: print(" {}".format(k),end="")