patB1005 继续3n+1 猜想

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int hashT[100000]={0};
void find(int x){
while(x!=1){
if(x%2==0) {
x/=2;
hashT[x]=1;
}
else{
x=3*x+1;
x=x/2;
hashT[x]=1;
}
}
}
bool cmp(int a,int b){
return a>b;
}
int main(int argc, char** argv) {
int n;
int size=0;
int buf[100000];
scanf("%d",&n);
for(int i=0;i<n;i++){
int x;  scanf("%d",&x);
find(x);
buf[size++]=x;
}
sort(buf,buf+size,cmp);
int ans[100000];
int anssize=0;
for(int i=0;i<size;i++){
if(hashT[buf[i]]==0){
// if(i!=0 || i !=size-1) printf(" ");
// printf("%d",buf[i]);
ans[anssize++]=buf[i];
}
}
for(int i=0;i<anssize;i++){
printf("%d",ans[i]);
if(i!=anssize-1) putchar(' ');
}
return 0;

}


猜你喜欢

转载自blog.csdn.net/qq_37816373/article/details/80179022