java3n 1_1005 继续(3n+1)猜想(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 (

输出格式:

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

输入样例:

6

3 5 6 7 8 11

输出样例:

7 6

思路:最开始就顺着想,要求出所有输入数字的猜想数;如果输入的K个数字有数字n不在所有的猜想数内,那n就是其中一个关键字;

1.输入数字归为一个数组a[]2.求出所有猜想数,归为一个数组b[]

3.如果输入的数字a[i]在数组b[]中,那a[i]归零

4.最后对a[]排序,按格式输出答案

因为猜想数的个数是动态的,必然是有重复的;所以需要考验数组长度,或去重,这样能加快一些效率;(之前错误的思路:1.求出所有输入数字的关键字(也就是第一步运算得出的数字),放入一个数组内keyNum[],

2.用输入的数字数组inputNum[]与keyNum[]中的值比较,相等则为零3.最后输出inputNum[]

错误的地方在于,inputNum[]中的元素,可能不再关键字keyNum[]中,而在所有的猜想数字中

)以下为笨方法,直接定义了一个长度为10000的猜想数数组;

import java.util.Scanner;

public class Main{

public static void main (String [] args){

Scanner in =new Scanner(System.in);

int num =in.nextInt();

int []testNum=new int[num];//声明输入数字的数组

int []result=new int[10000];//声明猜想数字的数组

int count=0;

for(int i=0;i

{

testNum[i]=in.nextInt();

}

result=myMethod(testNum);//获得所有猜想数字

for(int i=0;i

{

for(int j=0;j<10000;j++)

{

if(result[j]==testNum[i])

{

testNum[i]=0;

break;

}

}

}

for(int i=0;i

{

boolean tempBool=true;

for(int j=0;j

{

if(testNum[j]

{

int[]temp= {testNum[j]};

testNum[j]=testNum[j+1];

testNum[j+1]=temp[0];

tempBool=false;

}

}

if(tempBool)

{

break;

}

}

for(int i:testNum)//输出答案

{

if(i!=0&&count==0)

{

System.out.print(i);

count++;

}

else if(i!=0&&count>0)

{

System.out.print(" "+i);

}

}

}

public static int[] myMethod(int[]testNum)//求所有猜想数字的方法

{

int[]temp=new int[10000];

int tempCount=0;

for(int i =0;i

{

int m=testNum[i];

for(int j=0;j

{

if(m%2==0)

{

temp[tempCount]=m/2;

m=m/2;

tempCount++;

}

else

{

temp[tempCount]=(3*m+1)/2;

m=(3*m+1)/2;

tempCount++;

}

}

}

return temp;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【遥感物候】Matlab求解一元六次多项式,计算植被生长季始期

一元六次多项式能很好的逼近滤波后的曲线,与二次多项式相比,在拟合植被整个生长季曲线方面有更好的优势,该方法常用来描述北方温带和高纬度地区时序NDVI生长季模式。因此,本文使用一元六次多项式来拟合植被整个生长季曲线,效果很好。那么拟合后,这样解方程呢求生长季参数…

Android之给控件添加水纹波效果

1 问题 给控件添加水纹波效果&#xff0c;点击起来像点中了&#xff0c;不然效果太粗糙了&#xff0c;没反应。 2 实现 给控件添加如下属性 android:background"?android:attr/selectableItemBackground"波纹有边界 android:background"?android:attr/sele…

《看聊天记录都学不会C语言?太菜了吧》(1)我在大佬群里问基础问题没人理?

若是大一学子或者是真心想学习的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手…

个人博客作业_week2

1. 是否需要有代码规范 1.这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率&#xff0c;浪费时间的东西。 我不同意这个论点。 有句俗语’无规矩不成方圆‘&#xff0c;这亘古传承的至理同样适用于写代码。制定代码撰写规范并不是 迫于压力完成上级的任务&am…

最全面透彻的RabbitMQ指南

概念RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯…

TensorFlow中RNN实现的正确打开方式

上周写的文章《完全图解RNN、RNN变体、Seq2Seq、Attention机制》介绍了一下RNN的几种结构&#xff0c;今天就来聊一聊如何在TensorFlow中实现这些结构&#xff0c;这篇文章的主要内容为&#xff1a; 一个完整的、循序渐进的学习TensorFlow中RNN实现的方法。这个学习路径的曲线较…

【遥感物候】Hants NDVI时间序列谐波分析法数据重构,植被生长季曲线效果可佳(附Hants软件下载)

NDVI时间序列谐波分析法(Harmonic Analysis of NDVI Time-Series)(简称Hants )对时间序列数据进行平滑。该方法是一种新的物候分析方法,可用于定量化的监测植被动态变化。其核心算法是傅里叶变换和最小二乘法拟合, 即把时间波谱数据分解成许多不同频率的正弦曲线和余弦曲线,…

Android之在Java socket作为服务器里面返回数据头部怎么写入浏览器需要下载文件的文件名

1 问题 Android app里面写了一个Java socket的简单服务器,在浏览器里面输入相应的IP和端口访问服务器下载文件,Java socket怎么写返回数据的头部信息,浏览器才知道需要下载文件的名字呢? 2 关于Content-Disposition 在常规的HTTP应答中,Content-Disposition 响应头指示回…

java中hasnext的作用_java中Scanner的hasNext()的疑问

第一个问题&#xff0c;两段代码的区别在于阻塞的位置不同&#xff0c;加上一行输出代码就可以很明显地看到差别。Test.javaimport java.util.Scanner;public class Test {public static void main(String[] args) {Scanner s new Scanner(System.in);while(s.hasNext()){Syst…

《看聊天记录都学不会C语言?太菜了吧》(2)我说编程很容易你们不服?

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

ABAP的自学之路 ,初步认识ABAP 一

由于工作的关系&#xff0c;最近需要对SAP系统进行二次开发&#xff0c;于是开始学习ABAP。鉴于网上对于ABAP的资料少之又少&#xff0c;所以自己整理一些资料。 第一章 ABAP 开发环境和总体介绍1.1 ABAP 开发环境ABAP 开发的三种环境&#xff1a;&#xff08;1&#xff09;SAP…

LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序

/* 程序名&#xff1a;    LCD1602&#xff0c;4位数据总线液晶屏时钟&#xff0c;STC12C5A60S2的10位ADC功能程序 编写时间&#xff1a;  2015年10月4日 硬件支持&#xff1a;  LCD1602液晶屏 STC12C5A60S2 外部12MHZ晶振 接线定义&#xff1a; DB7 --> P1^7DB6…

WPF|黑暗模式的钱包支付仪表盘界面设计

收集下大家的意见&#xff0c;是否需要在文中贴上源码&#xff08;文末会给出源码链接&#xff09;&#xff0c;请大家踊跃留言。阅读目录效果展示准备简单说明 源码结尾&#xff08;视频及源码仓库&#xff09;1. 效果展示欣赏效果&#xff1a;2. 准备创建一个WPF工程&#x…

量子计算机的现状和趋势

量子计算机概述 计算机是一种新型的运算 它具有具有强大的并行处理数据的能力&#xff0c;可解决现有计算机难以运算的数学问题。因此&#xff0c;它成为世界各国战略竞争的焦点。 量子计算机的优势 量子计算机与现有的电子计算机以及正在研究的光计算机&#xff0c;生物计算机…

【空间数据库】Windows操作系统PostgreSQL+PostGIS环境搭建图文安装教程

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类…

Android之gravity=“center_vertical“和layout_gravity=“center“的效果

1、两控件分别加上2个下面的属性 gravity="center_vertical" android:layout_gravity="center" 代码如下 <LinearLayoutandroid:id="@+id/ll_no_love"android:layout_width="match_parent"android:layout_height="match…

《看聊天记录都学不会C语言?太菜了吧》(3)人艰不拆,代码都在谈恋爱?!

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

spark java 计数_spark程序——统计包含字符a或者b的行数

本篇分析一个spark例子程序。程序实现的功能是&#xff1a;分别统计包含字符a、b的行数。java源码如下&#xff1a;package sparkTest;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import…

golang reflect

reflect包实现了运行时反射&#xff0c;允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值&#xff0c;通过调用TypeOf获取其动态类型信息&#xff0c;该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值&#xff0c;该值代表运行时的数据。…

DB2常用命令

查看DB2License信息 DB2基础命令 转载于:https://www.cnblogs.com/arcer/p/5573317.html