待完善!1005 继续(3n+1)猜想 (25 分)

思路:看题目的样例,
n 3n+1
3 5、8、4、2、1
5 8、4、2、1
6 358、4、2、1
7 11、17、26、13、20、10、58、4、2、1
8 4、2、1
11 17、26、13、20、10、5、8、4、2、1
只有6和7是能把其他数覆盖的。
也就是说找出左边一栏中 没有在右边一栏中出现的 数,即为关键字。
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] num = new int[n];
        
        for(int i=0; i<n; i++){
            num[i] = sc.nextInt();
        }
        
        HashMap<Integer, Boolean> hashmap = new HashMap<Integer, Boolean>();
		for (int i = 0; i < 100; i++) {
			hashmap.put(i, false);// 数字键对应的值为false表示没被覆盖,true表示被覆盖
		}

        for (int i = 0; i < n; i++) {
			int m = num[i];
			// 先做3n+1的猜想
			while (m != 1) {
				if (m % 2 == 0) {
					m = m / 2;
 
				} else {
					m = (3 * m + 1) / 2;
				}
				hashmap.put(m, true);// 该数字被覆盖
			}
            
        }
        
        Arrays.sort(num);
        StringBuilder sb = new StringBuilder();
        for (int i = n-1; i >=0; i--) {
			if (hashmap.get(num[i]) == false) {
				// 说明没有被覆盖
                sb.append(num[i] + " ");
				
			}
		}
        String res = sb.toString();
        

       System.out.print(res.trim());

    }
}
没有全对



PAT乙级 文章被收录于专栏

做题记录

全部评论

相关推荐

01-20 10:59
中北大学 运营
juntenor:这是详历,可不是简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务