返回目录
注意点
- map里做标记时要做判断,因为计算过程中的值可能超过100,如果不加判断,会出现段错误
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
int map[110]={0},arr[110]={0},ans[110]={0};
for(int i=0;i<n;i++){
cin>>arr[i];
int tmp=arr[i];
while(tmp!=1){
if(tmp%2==0)tmp/=2;
else tmp=(tmp*3+1)/2;
if(tmp<101)map[tmp]=1;
}
}
for(int i=0;i<n;i++){
if(map[arr[i]]==0){
ans[arr[i]]=1;sum++;
}
}
for(int i=100;i>=1;i--){
if(ans[i]==1){
cout<<i;sum--;
if(sum!=0)cout<<" ";
}
}
return 0;
}