概要:
对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int main(){
int n,t;
map <int,int> MAP;
while(cin>>n){
int a[505];
if(n==0)
break;
MAP.clear();
for(int i=0;i<n;i++){
cin>>t;
a[i]=t;
while(t!=1){
if(t%2==0)
t/=2;
else
t=(3*t+1)/2;
MAP[t]=1;
}
}
int k=0;
for(int i=n-1;i>=0;i--){
if(MAP[a[i]]==0){
k++;
if(k==1)
cout<<a[i];
else
cout<<" "<<a[i];
}
}
cout<<endl;
}
return 0;
}