zoukankan      html  css  js  c++  java
  • PAT(B) 1005 继续(3n+1)猜想(Java)

    题目链接:1005 继续(3n+1)猜想
    分析

     找出所有的被“覆盖”的数,然后再将输入的数不在被“覆盖”的数中的添加到“关健数”中。输出前先转成数组并升序排序,降序输出即可。

    代码
    /**
     * Score 25
     * Run Time 151ms
     * @author wowpH
     * @version 1.1
     */
    
    import java.io.BufferedInputStream;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
    	public int k; 		// 待验证的数的个数
    	public int[] num; 	// 待验证的数
    	private List<Integer> ans; 		// 关键数
    	private List<Integer> cover;	// 被“覆盖”的数
    
    	public Main() {
    		ans = new ArrayList<Integer>();
    		cover = new ArrayList<Integer>();
    		input(); 	// 输入
    		setCover();	// 计算被“覆盖”的数
    		setAns(); 	// 计算关健数
    		output(); 	// 输出
    	}
    
    	private void input() {
    		Scanner sc = new Scanner(new BufferedInputStream(System.in));
    		k = sc.nextInt();
    		num = new int[k];
    		for (int i = 0; i < k; i++) {
    			num[i] = sc.nextInt();
    		}
    		sc.close();
    	}
    
    	private void setCover() {
    		for (int i : num) {
    			while (i > 1) {
    				if (0 == (i & 1)) {
    					i /= 2;
    				} else {
    					i = (i * 3 + 1) / 2;
    				}
    				if (cover.contains(i)) { // i已经被“覆盖”
    					break;
    				}
    				cover.add(i); 	// 若未覆盖,添加到被“覆盖”的数中
    			}
    		}
    	}
    
    	private void setAns() {
    		for (int i : num) {
    			if (!cover.contains(i)) {	// 输入的数,若未被覆盖
    				ans.add(i); 			// 则添加到关键数中
    			}
    		}
    	}
    
    	private void output() {
    		Object[] arr = ans.toArray();
    		Arrays.sort(arr); 	// 升序排序
    		for (int i = arr.length - 1; i > 0; i--) {	// 降序输出
    			System.out.print(arr[i] + " ");
    		}
    		if (arr.length > 0) {
    			System.out.println(arr[0]); 	// 最后一个数,换行
    		}
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    }
    
  • 相关阅读:
    HTTP协议实体的基本讲解
    了解Xcode目录结构 开发者必看
    图解oracle 之从客户端到服务端的sql追击
    iPhone开发经典语录集锦
    iphone网络编程 http请求 get / post(发送二进制文件) 总结
    iPhone 路径大全
    http发送文件的原理
    iPhone开发面试题葵花宝典
    来自mooon的最简单的日志类CSimpleLogger
    不再担心日志文件过大:通用日志滚动脚本
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060790.html
Copyright © 2011-2022 走看看