1005

继续(3n+1)猜想

卡拉兹(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 个空格隔开,但一行中最后一个数字后没有空格。

这道题是在1001的基础之上进行了一定的扩展,在验证一个数的同时也顺便验证了其他多个数,题目的要求就是要我们找出这些数,并从输入的数列中去掉这些存在多次验证的数,只保留下那些必须去验证的关键数,最后将关键数排成从大到小的顺序输出。JAVA的集合可以比较方便的完成这一任务,最后随便采用一种排序方式进行排序即可。
实现代码如下:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;public class Main {static Set<Integer> set=new HashSet<Integer>();public static void main (String[]args) {int K=0;int n[]=new int[101];int m[]=new int[101];int j=0;Scanner input=new Scanner(System.in);K=input.nextInt();for(int i=0;i<K;i++){n[i]=input.nextInt();cal(n[i]);}for(int i=0;i<K;i++){Iterator<Integer> it = set.iterator();while (it.hasNext()) {  int temp=it.next();if(temp==n[i])break;}  if(!it.hasNext()){m[j]=n[i];j++;}}for(int i=0;i<j;i++){int temp=m[i];int temp2;for(int ii=i+1;ii<j;ii++){if(temp<m[ii]){temp2=m[ii];m[ii]=temp;temp=temp2;}}m[i]=temp;if(i<j-1){System.out.print(m[i]+" ");}else {System.out.print(m[i]);}}}public static void cal(int n){while(n!=1){if(n%2==0){n=n/2;set.add(n);continue;}if(n%2!=0){n=3*n+1;n=n/2;set.add(n);continue;}}}
}

浙江大学PAT (Basic Level) Practice (中文)1005继续(3n+1)猜想JAVA实现代码及分析相关推荐

  1. PTA平台 · PAT(Basic Level) Practice(中文) 题目集

    前  言 ※  PTA是 程序设计类实验辅助教学平台 ,里边包含一些编程题目集以供练习. ※  PAT是 浙江大学计算机程序设计能力考试(Programming Ability Test),分为乙级( ...

  2. 浙江大学PAT (Basic Level) Practice (中文)1014福尔摩斯的约会JAVA实现代码及分析

    1014 福尔摩斯的约会 这道题需要注意的地方有以下几点: ①决定星期几的是前两个字符串的第一个相同的大写字母,注意是第一个大写的字母,小写不算. ②决定分钟数的是后两对字符串的第一个相同的字母所出现 ...

  3. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  4. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  5. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  6. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  7. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  8. 1048 数字加密【PAT (Basic Level) Practice (中文)】

    1048 数字加密[PAT (Basic Level) Practice (中文)] 原题链接:1048 数字加密 (pintia.cn) 1.前言 PAT(乙级)2015年冬季考试 第三题 分数: ...

  9. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

最新文章

  1. android短信发送乱码,解决CEMAPI发送中文短信时会乱码
  2. web developer tips (37):如何组织Using指令
  3. 【C++ Primer | 08】IO库
  4. 基于SIP协议的视频通讯
  5. Spring Boot中使用@Scheduled创建定时任务
  6. JAVA入门级教学之(对象的创建和使用)
  7. linux下进程调度模拟程序,linux认证辅导:linux进程调度模拟怎么做?
  8. wincc与第三方软件opc通讯_OPC 通讯不得不说的强大软件
  9. 带集成保护的共模滤波器(CMF)行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. Android开发实践:Java层与Jni层的数组传递
  11. JDBC连接池DBUtils
  12. ftp测试工具_Linux网络配置 | FTP 实战-本地用户登录
  13. Hibernate下载地址
  14. m451dn linux驱动下载,惠普m451dn驱动下载-惠普hp m451dn打印机驱动下载 v61.120.04官方版--pc6下载站...
  15. 深入理解java8,深入理解Java8新特性与源码剖析
  16. 迪文串口屏TTL与主控板RS232电平信号转换方案
  17. 46-动态编程语言(python)大作业-记忆翻牌游戏
  18. java实现excel合并的单元格自动换行自动调高
  19. Excel_文本转数值型
  20. 盘点气压传感器在智能手机中应用场景 智芯传感板装式压力传感器提升产品性能

热门文章

  1. Google的爬虫家族[Spider]
  2. 使用adb进行备份和恢复
  3. 世界首例基因编辑婴儿
  4. 阿里云ACA认证考试
  5. 她经济”成为品牌新危机?小红书精准营销读懂女人心
  6. iOS 测试之非代码获取 iPhone 型号及其他信息
  7. c#的winForm启动自动隐藏界面包含任务栏图标
  8. [导入]2008TVB新剧《太极》全25集大结局[DVD国语中字]
  9. 霍常亮淘宝客教你开发app第9节:uniapp核心知识点
  10. 华为交换机检查主机丢包流量统计配置