#include <stdio.h>
int vis[10000 + 5];
void push(int x) {
if(!vis[x]) {
vis[x] = -1;
}
do {
if(x%2 == 0) x /= 2;
else x = (3*x+1)/2;
vis[x] = 1;//在这个过程里可能就把原来数列的数给覆盖了
}while(x != 1);
}
int main() {
int K, i; scanf("%d", &K);
for(i = 1; i <= K; i ++) {
int n; scanf("%d", &n);
push(n);
}
int first = 1;
for(i = 10000; i >= 1; i --) {
if(vis[i] == -1) {
if(first) printf("%d", i);
else printf(" %d", i);
first = 0;
}
}
return 0;
}
思路 每一次被覆盖的记为1,所有没被覆盖的的原来的数输出,那个空格控制有趣