PAT 乙级 1005. 继续(3n+1)猜想 (25) Java版
卡拉兹(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版相关推荐
- PAT乙级 1005 继续(3n+1)猜想 (25分)
1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...
- C++学习之路 | PTA乙级—— 1005 继续(3n+1)猜想 (25分)(精简)
1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...
- pat 乙级 1005 继续(3n+1)猜想(C++)
题目 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验 ...
- PAT乙级 1005继续3n+1猜想
当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时候,我们需要计算 3.5.8.4.2.1,则当我们对 n=5.8.4.2 进行验证的时候, ...
- PAT乙级(1005 继续(3n+1)猜想)
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...
- PAT乙级1005 继续(3n+1)猜想//散列初级运用
拉兹(Callatz)猜想已经在B1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...
- 【PAT乙】1005 继续(3n+1)猜想 (25分)
problem 1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以 ...
- 1005 继续(3n+1)猜想 (25分)
1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中 ...
- 简便满分解法:1005 继续(3n+1)猜想 (25分)
立志用更少的代码做更高效的表达 Pat乙级题解汇总-->传送门 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复 ...
最新文章
- SpringBoot面试题(持续整理中……)
- IIS HTTP 错误 404.17 - Not Found 解决方法
- 操作系统内存管理_操作系统6内存管理基础
- 强化学习(六)时序差分在线控制算法SARSA
- .NET Mvc Razor也可以这样玩!
- sql 注射_基本注射/资格赛,范围
- python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)
- 基于socket的C语言编程,C语言实现的Socket编程
- java工厂模式定义宠物_Java设计模式之抽象工厂模式
- IIS 6.0 SSL证书安装
- vue跳转静态HTML,Vue-router,在静态切换的世界中翱翔
- LINQ的Java等效项是什么? [关闭]
- MYSQL:RELPACE用法
- 【渝粤教育】国家开放大学2018年秋季 0709-21T初级会计实务(一) 参考试题
- 应用程序按照以下顺序执行由 global.asax 文件中定义的模块或用户代码处理的事件...
- linux基本命令之stat
- Flash Builder 4.7 注释字体修改
- php如何输入错误返回,php – 从函数返回“错误”的最佳做法
- EM 算法的推导和解释
- java如何为图片加水印
热门文章
- jquery validate 表单验证
- Reporting Services 在WIN7和2008下出现“授予的权限不足,无法执行此操作。 (rsAccessDenied)”的解决办...
- openresty的安装和使用
- nodejs中的模块的理解
- rk3288对于parameter参数文件的解析处理【转】
- 在linux里flash自动转图片
- Python发布 - distutils简单使用
- P2898 [USACO08JAN]haybale猜测Haybale Guessing
- swift:创建滚动视图的图片轮播器
- 跨浏览器测试工具推荐