给出一个正整数 n(n\le 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7\times10^{11}7×1011)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 nn 是 20,变化的过程是 [20, 10, 5, 16, 8, 4, 2, 1]。

根据给定的数字,验证这个猜想,并从最后的 1 开始,倒序输出整个变化序列。

输入格式

输出格式

输入输出样例

输入    20

输出     1 2 4 8 16 5 10 20

起初我是直接用数组解题,毕竟这是一道入门题,下意识没有考虑太多,但是提交后最后一个测试点过不去,在查阅其他大佬的题解后发现是我数组开的不够大。因为它是奇数时需要先乘3再加一,数字可能会变的很大。将数组大小修改后代码如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int cnt=0;int ans[]=new int[10000];//开太小最后一个测试点是过不去的ans[0]=n;while (n!=1) {if (n%2!=0) {n=n*3+1;}else{n=n/2;}cnt++;ans[cnt]=n;}for (int i = cnt; i>=0; i--) {System.out.print(ans[i]+" ");}}
}

而后又又大佬表明倒序输出像极了栈的特点(后入先出)。所以这里可以考虑用栈的方法做。并且java是有内置栈的,用起来挺方便。

代码如下:

import java.util.Scanner;
import java.util.Stack;public class Main {static Stack MyStack=new Stack<>();//用栈做public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int cnt=0;//计数用MyStack.push(n);while (n!=1) {cnt++;if (n%2!=0) {n=n*3+1;}else{n=n/2;}MyStack.push(n);}for (int i = 0; i <= cnt; i++) {System.out.print(MyStack.pop()+" ");}}
}

P5727 冰雹猜想相关推荐

  1. c语言冰雹猜想用while,c/c++开发分享P5727 冰雹猜想

    马克当,那这不就爽了吗?! 传送门 题目描述 给出一个正整数 n(nle 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若 ...

  2. P5727 冰雹猜想(C语言)

    #include<stdio.h>int main() {int n;int a[1000]={0};int i=0;scanf("%d",&n);while( ...

  3. P5727 【深基5.例3】冰雹猜想(python3实现)

    [深基5.例3]冰雹猜想 - 洛谷 """P5727 [深基5.例3]冰雹猜想(python3实现) https://www.luogu.com.cn/problem/P ...

  4. p5727深基5.例3冰雹猜想c语言,深基

    欸嘿,典型的求解第k小的数的问题 算法中使用了快速排序 关键之处在于原本快排需要两边都进行排序,但现在我们只关心第k小的数,所以,如果在ll比k大那么就排左半边,比k小就比右半边,从而实现时间复杂度的 ...

  5. python冰雹猜想_洛谷-P5727 【深基5.例3】冰雹猜想

    洛谷-P5727 [深基5.例3]冰雹猜想 给出一个正整数 \(n(n\le 100)\),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环 ...

  6. 洛谷 P5727 【深基5.例3】冰雹猜想

    C语言基础系列文章 C语言 五种方法输出100以内的素数(质数) 源码 C语言分支结构超基础编程习题整理 详细分析附源码 C语言题解 洛谷P1614 爱与愁的心痛 详细分析源码 C语言题解 P5719 ...

  7. P5727 【深基5.例3】冰雹猜想(思路+代码详解)python实现

    题目描述 给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过验证很大的数字(7×)都可以按照这样 ...

  8. P5727 【深基5.例3】冰雹猜想

    题目描述 给出一个正整数 n(n\le 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过 ...

  9. Python验证和可视化冰雹猜想、角谷猜想、考拉兹猜想

    推荐教材:<中学生可以这样学Python(微课版)>,董付国.应根球,清华大学出版社,ISBN:9787302554639 京东购买链接: =================== 问题描述 ...

最新文章

  1. 7714天,王小川正式卸任搜狗CEO!用一瞬间定格永恒
  2. 从平台到中台 | Elaticsearch 在蚂蚁金服的实践经验
  3. 数据结构-Huffman树
  4. 苹果新技术或让无线充电更便捷
  5. 主类main方法里面可以有不带public的子类 但是不能有接口
  6. MySQL数据库备份与还原
  7. 微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能
  8. 三维分子模型软件PyMOL
  9. 【Netty报错:】XXXDecoder.decode() did not read anything but decoded a message.
  10. Harmonious Graph (并查集 —父亲为最大值)
  11. 考研复试计算机网络篇
  12. eclipse配置python开发环境_Eclipse配置Python的环境
  13. 配置Tomcat详细教程!
  14. 844.比较含退格的字符串
  15. Cartographer ROS编译安装
  16. aircrack-ng 添加Mac OS X 支持 airodump-ng和aireplay-ng都可以用了
  17. 群晖内网穿透(实战)
  18. 被刷屏的塞尔达来了,附源码!
  19. 关于IndexedDB的操作文档
  20. 微信企业号通讯录套件安装失败

热门文章

  1. 发布JNCIP考试标准版本JUNOS实验用虚拟机
  2. 设计师学python有意义吗-如果你有设计师朋友,请对他好一些...
  3. HTML编辑器-HTML5极速入门
  4. 我的世界合成表自定义CraftTweaker1.18教程
  5. 2.微信支付分类 和 申请方式 和 支付工具
  6. jfinal restful.java_JFinal RESTful
  7. 基于纷享销客开放平台,实现纷享CRM与金蝶云星空系统数据同步
  8. 数据分析工具比较浅析
  9. WPF系列(二)数据转换
  10. java半碳前叉结构,山地车避震前叉功能及原理分类详解(图文)