看到这个题目时,一点想法也没有。
然后看到论坛上说,对于3 8 4 7 15 ,求出每个数的覆盖数序列,最后组成一个覆盖数集合,然后在其中查找原序列中的数,没找到则为关键数。。。才明白怎么回事。
多做题才能有积累。加油,积少成多~~
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int k,n;
int key[1005];
int a[505];
while(cin>>n&&n!=0){
memset(key,0,sizeof(key));
for(int i=0;i<n;i++){
cin>>k;
a[i]=k;
while(k!=1){
if(k%2==0)
k/=2;
else
k=(k*3+1)/2;
if(k<1000)
key[k]=1;
}
}
int flag=0;
for(int i=n-1;i>=0;i--)
if(key[a[i]]==0){
if(flag==1)
cout<<" ";
cout<<a[i];
flag=1;
}
cout<<endl;
}
return 0;
}