题目链接: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();
}
}

PAT(B) 1005 继续(3n+1)猜想(Java)的更多相关文章

  1. PAT 乙级 1005.继续(3n+1)猜想 C++/Java

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

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

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B   卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情 ...

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

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz ...

  4. [C++]PAT乙级1005. 继续(3n+1)猜想 (25/25)

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

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

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz ...

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

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

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

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

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

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

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

    1005 继续(3n+1)猜想 (25)(25 分) - 过期汽水的博客 - CSDN博客https://blog.csdn.net/qq_40167974/article/details/80739 ...

随机推荐

  1. sonca排除不扫描文件

    在pom.xml文件中的<properties>标签下加上<sonar.exclusions>XXX</sonar.exclusions>标签,如下 <pro ...

  2. web目录

    Proj app controllers jobs models view user xxx.html init.go conf message public img js css html

  3. Bean Shell常用内置变量

    JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info( ...

  4. LeetCode 第 151 场周赛

    一.查询无效交易(LeetCode-1169) 1.1 题目描述 1.2 解题思路 根据,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整) 得出 城市A和其他城市任何一笔交 ...

  5. Go by Example-流控制语句之if/else

    Go by Example-流控制语句之if/else Go中的if/else的用法和其他语言没什么区别,在格式要求上保留了类似Python中的一些特性. 基本概念 在条件判断语法 if/else 中 ...

  6. Java项目开发

    项目开发整体构建: MVC+DAO设计模式 用面向对象的方式理解和使用数据库,一个数据库对应一个java项目 数据库--项目 表--类 字段--属性 表中的一条数据--类的一个对象 M:模型层 Jav ...

  7. oracle sql insert插入字符&

    最近遇到insert 语句插入&字符报弹出框,如下: sql: insert into test_ldl001 (ID, NAME) values (', '/test/test.do?act ...

  8. iOS 的url中含有中文解决方法

    [NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题. 方法1: NSString* en ...

  9. <JavaScript>使用onmousemove事件实现移动(拖拽)div 出现的关于offsetX的问题

    出现的问题如下图所示(截屏看不出来看log) 再移动鼠标的过程中会不断的出现异常值导致拖动的div不断切换位置,回到左上角. 我以为是冒泡机制导致的所以添加了下面一段阻止冒泡,随便也阻止了默认事件,但 ...

  10. <JavaScript>调用apply报错:CreateListFromArrayLike called on non-object;

    Function.apply(obj, args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args--> ...