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

题目来源 

https://www.patest.cn/contests/pat-b-practise/1005

没有深入思考,直接暴力做了,当成是练习语言语法的题目了。如果数的范围不是1 到 100 那就得换种方法了做了。

不排序,或者说是桶排序的方式来。

记录每个数的变化过程中出现的数字,然后比一比就行了。最后用桶排序的方法把结果从大到小输出。

(java 学的烂,代码凑合看吧)

 

import java.util.*;
public class Main{
public static void main(String args[]){
Scanner read = new Scanner(System.in);
int cont = read.nextInt(), i = 0;
int in[] = new int[102];
int res[] = new int[102];
int show[] = new int[10000];
while(i < cont){
int temp = read.nextInt();
in[i++] = temp;
while( temp != 1){
if(temp % 2 == 0){
temp /= 2;
}else{
temp = (temp *3 + 1) / 2;
}
show[temp] = 1;
}
}
int total = 0 ;
for(int j=0; j<cont; ++j){
if(show[in[j]] == 0){
res[in[j]] = 1;
total ++;
}
}
for(int j=100; j>1; --j){
if(res[j] == 1){
System.out.print(j);
if(total > 1){
System.out.print(" ");
}else if(total == 1){
System.out.println();
}
total --;
}
}
}
}

 

posted @ 2017-03-19 22:19  _Ade  阅读(118)  评论(0编辑  收藏  举报