#include<stdio.h> #include<algorithm> using namespace std; bool HARSH[10066]; //实际上申请来之后初试都是false bool cmp(int a,int b) { return a>b; } int main() { fill(HARSH,HARSH+1066,false); int n; scanf("%d",&n); int arr[1006],cnt=0; for(cnt=0 ; cnt<n ; ++cnt) { scanf("%d",&arr[cnt]); } for(int i=0 ; i<cnt ; ++i) { int tmp=arr[i]; while(tmp!=1) { if(tmp%2==1) tmp=(tmp*3+1)/2; else tmp/=2; HARSH[tmp]=true; //标记为覆盖数 } } //数个数 只是为了输出的时候控制空格 int sum=0; for(int i=0 ; i<cnt ; ++i) if(HARSH[arr[i]]==false) ++sum; sort(arr,arr+106,cmp); //输出前sum个 for(int i=0 ; i<n ; ++i) { if(HARSH[arr[i]]==false) { printf("%d",arr[i]); --sum; if(sum>=1) printf(" "); } } return 0; }
时间: 2024-10-18 05:19:15