1. 题目介绍
2. 具体代码实现
#include<iostream>
#include<algorithm> //sort函数
using namespace std;
bool test(int n,int in){ //判断in是否被n覆盖
while(n!=1){
if(n%2==0)
n/=2;
else
n=(3*n+1)/2;
if(in==n)
return true;
}
return false;
}
bool cmp(int x,int y){
return x>y;
}
int main(){
int n;
cin>>n;
int num[100]; //存储输入的数字
int result[100]; //存储不能被覆盖的数字
int count=0;
for(int i=0;i<n;i++)
cin>>num[i];
for(int i=0;i<n;i++){ //遍历所有数字,判断其是否被除自己之外的其余数字覆盖
int j;
for(j=0;j<n;j++){
if(i==j) //如果遍历到数字本身,则跳过
continue;
if(test(num[j],num[i])==true) //如果该数字能被其余数字覆盖,跳出循环
break;
}
if(j>=n) //判断该数字是否被覆盖了。如果j>=n,则未被覆盖
result[count++]=num[i];
}
sort(result,result+count,cmp); //对结果由大到小排序
for(int i=0;i<count;i++){
if(i!=0)
cout<<" ";
cout<<result[i];
}
return 0;
}