#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int count=0,q[1000]={0},temp=0;
int q_flag[1000]={0};
//录入数据
cin>>count;
for(temp=0;temp<count;++temp)
cin>>q[temp];
//数据排序,先小后大
for(temp=0;temp<count;++temp)
{
int a=0;
for(int temp_1=(temp+1);temp_1<count;++temp_1)
{
if(q[temp]>q[temp_1])
{
a=q[temp];
q[temp]=q[temp_1];
q[temp_1]=a;
}
}
}
//3n+1验证
for(temp=count-1;temp>=0;--temp)
{
int flag=0;
int q_single=q[temp];
while(q_single!=1)//&&q_single!=0
{
if(q_single%2==0)//不可用if(!q_single%2)代替,逻辑0,1和bool0,1有区别
q_single/=2;
else
q_single=((3*q_single)+1)/2;
//寻找被覆盖的数
for(int i=count-1;i>=0;--i)
{
if(q_single==q[i])
{
q_flag[i]=1;
break;
}
}
}
}
//输出结果
--count;
while(q_flag[count]==1)
--count;
cout<<q[count];
for(--count;count>=0;--count)
{
if(q_flag[count]==0)
{
cout<<' ';
cout<<q[count];
}
}
return 0;
}
B1005
最新推荐文章于 2019-07-17 23:09:47 发布