#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main ()
{
int n;
cin>>n;
int book[100005]={0};//标记数字i是否在之前的循环中出现过
int s[105];
int a[105];
int k=0;
for(int i=0;i<n;i++)
{
cin>>s[i];
int tmp=s[i];
while(tmp!=1)
{
if(tmp%2!=0)
tmp=3*tmp+1;
tmp=tmp/2;
book[tmp]=1;//出现过,则book标记为1
}
}
//遍历,将没出现过的数放到另一个数组中
for(int i=0;i<n;i++)
{
if(book[s[i]]==0)
a[k++]=s[i];
}
sort(a,a+k);//排序
cout<<a[k-1];
for(int j=k-2;j>=0;j--)
cout<<" "<<a[j];
cout<<endl;
return 0;
}
1005 继续(3n+1)猜想
最新推荐文章于 2025-03-05 16:46:18 发布