自拟测试点
6
3 5 6 7 8 11
3:5 8 4 2 1
5:√
6:3 (…√)但不算是被覆盖了,是关键数
7:11 16 8 4 2 1
8:√
11:√
ans:
7 6
4
6 3 2 1
6:3 5 8 4 2 1
3:√
2:√
ans:
6
4
7 4 9 12
7:11 16 8 4 2 1
4:√
9:14 7 (7被覆盖)(…√)
12:6 3 5 8 (…√)
ans:
7 9 12
通过代码
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
bool gt(const int &a, const int &b) {
return a>b;
}
int main() {
int n;
cin>>n;
int num[101];
fill(num, num+101, 0);
int t;
int shulie[n];
int i,j;
for(i=0;i<n;i++) {
cin>>t;
shulie[i] = t;
while(t!=1) {
if(t%2) {
t=(3*t+1)/2;
} else {
t=t/2;
}
if(t<101) num[t]=1;
}
}
int keyn[n];
for(i=0,j=0; i<n;i++) {
if(num[shulie[i]]==0) {
keyn[j]=shulie[i];
j++;
}
}
sort(keyn,keyn+j, gt);
for(i=0;i<j-1;i++) {
cout<<keyn[i]<<' ';
}
cout<<keyn[j-1];
}