题目:http://www.patest.cn/contests/pat-b-practise/1005
代码:
#include <stdio.h>
int main()
{
int k,i,j,m,z;
int a[100],b[100],c[100];
scanf("%d",&k);
int change(int);
for (i=0;i<k;i++)
{
scanf("%d",&a[i]);
b[i] = 1;
}
for (i=0;i<k;i++)
{
m = a[i];
while(m!=1)
{
for (j=0;j<k;j++)
{
if(i == j)
continue;
if (m == a[j])
b[j] = 0;
}
m = change(m);
}
}
j = 0;
for (i=0;i<k;i++)
{
if (b[i]==1)
{
c[j] = a[i];
j++;
}
}
for (i=0;i<j;i++)
{
for (z=i;z<j;z++)
{
if (c[i]<=c[z])
{
m = c[i];
c[i] = c[z];
c[z] = m;
}
}
}
for (i=0;i<j-1;i++)
printf("%d ",c[i]);
printf("%d",c[j-1]);
return 0;
}
int change(int m)
{
if (m%2==0)
m = m/2;
else
m = (3*m+1)/2;
return m;
}