卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。

当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。

现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

输入格式:每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1<n<=100)的值,数字间用空格隔开。

输出格式:每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。

输入样例:

6
3 5 6 7 8 11

输出样例:

7 6
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.TreeSet;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int k = in.nextInt();int[] n = new int[k];TreeSet[] treeSets = new TreeSet[k];for (int i = 0; i < k; i++) {n[i] = in.nextInt();treeSets[i] = new TreeSet<Integer>(getNumber(n[i]));}in.close();LinkedList<Integer> list = new LinkedList<Integer>();for (int i = 0; i < k; i++) {if (isMajor(n[i], treeSets, i)) {list.add(n[i]);}}int[] array = new int[list.size()];for (int i = 0; i < array.length; i++) {array[i] = list.get(i);}Arrays.sort(array);for (int i = array.length - 1; i > 0; i--) {System.out.print(array[i] + " ");}System.out.print(array[0]);}public static boolean isMajor(int n, TreeSet[] treeSets, int index) {for (int i = 0; i < treeSets.length; i++) {if (i != index && treeSets[i].contains(n)) {return false;}}return true;}public static TreeSet<Integer> getNumber(int n) {TreeSet<Integer> treeSet = new TreeSet<Integer>();treeSet.add(n);while (n != 1) {if (n % 2 == 0) {n = n / 2;} else {n = (3 * n + 1) / 2;}treeSet.add(n);}return treeSet;}
}

PAT 乙级 1005. 继续(3n+1)猜想 (25) Java版相关推荐

  1. PAT乙级 1005 继续(3n+1)猜想 (25分)

    1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...

  2. C++学习之路 | PTA乙级—— 1005 继续(3n+1)猜想 (25分)(精简)

    1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...

  3. pat 乙级 1005 继续(3n+1)猜想(C++)

    题目 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验 ...

  4. PAT乙级 1005继续3n+1猜想

    当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时候,我们需要计算 3.5.8.4.2.1,则当我们对 n=5.8.4.2 进行验证的时候, ...

  5. PAT乙级(1005 继续(3n+1)猜想)

    卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...

  6. PAT乙级1005 继续(3n+1)猜想//散列初级运用

    拉兹(Callatz)猜想已经在B1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...

  7. 【PAT乙】1005 继续(3n+1)猜想 (25分)

    problem 1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以 ...

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

    1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...

  9. 简便满分解法:1005 继续(3n+1)猜想 (25分)

    立志用更少的代码做更高效的表达 Pat乙级题解汇总-->传送门 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复 ...

最新文章

  1. SpringBoot面试题(持续整理中……)
  2. IIS HTTP 错误 404.17 - Not Found 解决方法
  3. 操作系统内存管理_操作系统6内存管理基础
  4. 强化学习(六)时序差分在线控制算法SARSA
  5. .NET Mvc Razor也可以这样玩!
  6. sql 注射_基本注射/资格赛,范围
  7. python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)
  8. 基于socket的C语言编程,C语言实现的Socket编程
  9. java工厂模式定义宠物_Java设计模式之抽象工厂模式
  10. IIS 6.0 SSL证书安装
  11. vue跳转静态HTML,Vue-router,在静态切换的世界中翱翔
  12. LINQ的Java等效项是什么? [关闭]
  13. MYSQL:RELPACE用法
  14. 【渝粤教育】国家开放大学2018年秋季 0709-21T初级会计实务(一) 参考试题
  15. 应用程序按照以下顺序执行由 global.asax 文件中定义的模块或用户代码处理的事件...
  16. linux基本命令之stat
  17. Flash Builder 4.7 注释字体修改
  18. php如何输入错误返回,php – 从函数返回“错误”的最佳做法
  19. EM 算法的推导和解释
  20. java如何为图片加水印

热门文章

  1. jquery validate 表单验证
  2. Reporting Services 在WIN7和2008下出现“授予的权限不足,无法执行此操作。 (rsAccessDenied)”的解决办...
  3. openresty的安装和使用
  4. nodejs中的模块的理解
  5. rk3288对于parameter参数文件的解析处理【转】
  6. 在linux里flash自动转图片
  7. Python发布 - distutils简单使用
  8. P2898 [USACO08JAN]haybale猜测Haybale Guessing
  9. swift:创建滚动视图的图片轮播器
  10. 跨浏览器测试工具推荐