1005. 继续(3n+1)猜想 (25)

#include<iostream>
#include <algorithm>
using namespace std;
bool compare(int a,int b){
	return a>b;
}

int main(){
	int k,a[110],flag[110]={0};
	int i,j,x,tmp[110];
	cin>>k;
	for(i=0;i<k;i++){
		cin>>a[i];
	}

	for(i=0;i<k;i++){
		x=a[i];
		if(flag[x]==1){
			continue;
		}
		while(x!=1||flag[x]!=1){
			if(x%2==0){
				x/=2;
			}else{
				x=(x*3+1)/2;
			}
			if(x<=100){
				flag[x]=1;
			}
		}
		
	}
	j=0;
	for(i=0;i<k;i++){
		if(flag[a[i]]==0){
			//cout<<a[i]<<" ";
			tmp[j++]=a[i];
		}
	}

	sort(tmp,tmp+j,compare);
	if(j>0){
		for(i=0;i<j-1;i++){
		cout<<tmp[i]<<" ";
		}
		cout<<tmp[j-1];
	}
	
	
	return 0;
} 

你可能感兴趣的:(pat)