本题通过双重循环来去掉关键数,之后再进行排序输出
#include<bits/stdc++.h>
using namespace std;
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,cnt=0;
//freopen("1005.txt","r",stdin);
scanf("%d",&n);
vector<int> v(n);
for(int i=0;i<n;i++)
scanf("%d",&v[i]);
for(int i=0;i<n;i++)
{
int t=v[i];
if(t==0) continue;
while(t!=1)
{
if(t%2==0)
t/=2;
else
t=(3*t+1)/2;
for(int j=0;j<n;j++)
{
if(v[j]==t)
{
//cout<<"here"<<endl;
v[j]=0;
cnt++;
break;
}
}
}
}
sort(v.begin(),v.end(),cmp);
for(int i=0;i<n-cnt;i++)
{
if(i!=0) printf(" ");
printf("%d",v[i]);
}
return 0;
}