#include<stdio.h>
int main()
{
int i,j,k,n,m=0;
if(scanf("%d",&i));
int a[100],b[100];
for(j=0;j<i;j++)
{
scanf("%d",&a[j]);
b[j]=a[j];
}
for(j=0;j<i;j++)
{
n=a[j];
while (a[j]!=1)//对输入的数进行操作
{
if((a[j]%2)!=0)
{
a[j]=(3*a[j]+1)/2;
}
else
{
a[j]=a[j]/2;
}
for(k=0;k<i;k++)
{
if(b[k]==a[j])
{
b[k]=-1;
m++;
}
}
}
a[j]=n;
}
for(k=0;k<i-1;k++)//排序
{
for(j=k;j<i;j++)
{
if(b[k]<b[j])
{
int t=b[j];
b[j]=b[k];
b[k]=t;
}
}
}
for(j=0;j<i;j++)
{
if(b[j]!=-1)
{
if(j<i-m-1)
{
printf("%d ",b[j]);
}
else
{
printf("%d",b[j]);
}
}
}
printf("\n");
return 0;
}
PAT 1005
最新推荐文章于 2025-12-05 14:37:41 发布
该程序使用C语言实现Collatz序列,对输入的一系列整数进行Collatz操作,然后统计并输出序列中不为1的元素,并对这些元素进行排序。Collatz序列是一个数学游戏,对每个数如果它是偶数则除以2,如果是奇数则乘以3再加1,直到达到1为止。
260

被折叠的 条评论
为什么被折叠?



