题目1033:继续xxx定律
#include <stdio.h>
int a[510],n;
int mark[510];
void check(int t)
{
int i;
for(i=0;i<n;i++){
if(t==a[i])
mark[i]=0;
}
}
int main()
{
int i,cnt;
// freopen("G:\\in.txt", "r", stdin);
while(scanf("%d",&n)!=EOF){
if(n==0) break;
cnt=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
mark[i]=1;
}
for(i=0;i<n;i++){
if(mark[i]==1){ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int tmp=a[i]; // 每次把a[i]赋给一个临时变量,不要直接修改a[i],因为下面还要把它给输出。
while(tmp!=1){
if(tmp%2==0){
tmp=tmp/2;
//printf("--%d--",a[i]);
check(tmp);
}
else{
tmp=(tmp*3+1)/2;
//printf("***%d***",a[i]);
check(tmp);
}
}
cnt++;
}
}
int q;
for(i=n-1;i>=0;i--){
if(mark[i]==1){
printf("%d",a[i]);
q=i;
break;
}
}
for(i=q-1;i>=0;i--){
if(mark[i]==1){
printf(" %d",a[i]);
}
}
printf("\n");
}
return 0;
}